Error: expected '}' before '{' token

Error: expected '}' before '{' token

There clearly is a '}' at the end of that first line! Its a 5x35 array. Compiling for an ESP12E. I know i shoud not use String, but is it worse than using char pointers in unallocated mem blocks...

const     String    eAddrNames[5][EADDR_SZ] = { { "RESERVED" }
                        { "dailyEmails", "emailsCount", "fanEvery", "fanFor", "fanMode", "fanPostMixTime", "fanTimeout", "HHOffset", "hysteresis", "lastEmailHour", "lastIssueCodeI", "minsFan", "minsCool", "minsHeat", "lock", "MMOffset", "temperature", "temperatureSet", "tempX", "timeBlocks", "tempTimeout", "timeNTP", "lastVersionDayA", "version2A", "version3A", "lastVersionDayB", "version2B", "version3B", "RESERVED_INT", "RESERVED_INT"}
                        { "unlockTime", "codeMS", "epoch", "longmillis", "lastEmailMS", "lastIssueMS", "myResetMS", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG" }
                          { "APPass", "ATTPass", "BIPass", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10" }
                          { "RESERVED_STRING20", "RESERVED_STRING20", "RESERVED_STRING20", "RESERVED_STRING20" } };

troll

const     String    eAddrNames[5][EADDR_SZ] = { { "RESERVED" }
                        { "dailyEmails", "emailsCount", "fanEvery", "fanFor", "fanMode", "fanPostMixTime", "fanTimeout", "HHOffset", "hysteresis", "lastEmailHour", "lastIssueCodeI", "minsFan", "minsCool", "minsHeat", "lock", "MMOffset", "temperature", "temperatureSet", "tempX", "timeBlocks", "tempTimeout", "timeNTP", "lastVersionDayA", "version2A", "version3A", "lastVersionDayB", "version2B", "version3B", "RESERVED_INT", "RESERVED_INT"}
                        { "unlockTime", "codeMS", "epoch", "longmillis", "lastEmailMS", "lastIssueMS", "myResetMS", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG", "RESERVED_LONG" }
                          { "APPass", "ATTPass", "BIPass", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10", "RESERVED_CHAR10" }
                          { "RESERVED_STRING20", "RESERVED_STRING20", "RESERVED_STRING20", "RESERVED_STRING20" } };

That's hardly helpful.

Um, aggregate initializers are supposed to be separated by commas. Where are your commas?

const String eAddrNames[5][EADDR_SZ] = { { "RESERVED" }, // <- comma
    { "dailyEmails", "emailsCount", "fanEvery", "fanFor", "fanMode", "fanPostMixTime", "fanTimeout",
      "HHOffset", "hysteresis", "lastEmailHour", "lastIssueCodeI", "minsFan", "minsCool", "minsHeat",
      "lock", "MMOffset", "temperature", "temperatureSet", "tempX", "timeBlocks", "tempTimeout",
      "timeNTP", "lastVersionDayA", "version2A", "version3A", "lastVersionDayB", "version2B",
      "version3B", "RESERVED_INT", "RESERVED_INT"}, // <- comma
      ...
      // and so on
      ...
 };

I missed the commas between the dimensions. Darn, thanks!

mattlogue:
I know i shoud not use String, but is it worse than using char pointers in unallocated mem blocks...

because whatever you do, don't define char arrays then use those or even more, don't put const chars in PROGMEM.

Load up your RAM with data you already have a copy of and be sure to use C++ convenience objects to trash the heap.

Yep

GoForSmoke:
because whatever you do, don't define char arrays then use those or even more, don't put const chars in PROGMEM.

Load up your RAM with data you already have a copy of and be sure to use C++ convenience objects to trash the heap.

You should know better after all this time, hence Reply #1.

That's hardly helpful.

I'm hardly helping you shoot your own foot. Noted.