How to properly initialize structs?

I am not used to C++, only plain C...
I have a struct definition like this inside the espconfig.h file:

typedef struct __attribute__((__packed__))
{
  unsigned int checksum;
  char ssid[32];
  char passwd[32];
  byte addr[4];
  long baud;
  unsigned int tcpport;
  byte mode; //WIFI_AP, WIFI_STA, WIFI_AP_STA or WIFI_OFF
  byte reserved[23]; //For future expansion
} ESPConfiguration;  // Size: 100 bytes

It is meant to be saved in EEPROM to hold my configuration items.
In the LoadConfig() function located in a regular C++ espconfig.cpp file I have this:

int LoadConfig(ESPConfiguration *Conf)
// Read configuration data from EEPROM, return 0 if OK
{
  ESPConfiguration Cnf = {0};  //Temp struct

  //Load struct from EEPROM
  EEPROM.get(0, Cnf);
  //Calculate checksum:
  chk = Cnf.checksum;  //Save stored checksum
  Cnf.checksum = 0;    //Clear checksum before calculation
  if (CheckSum(&Cnf, sizeof(Cnf)) == chk){ //Validated checksum
    Cnf.checksum = chk;//Restore checksum
    *Conf = Cnf;       //Return struct
    return 0;
  }
  else
    return -1;   //Return without changing data
}

When I verify this I get a warning about the initialization of the local struct variable:

..\espconfig.cpp:19:28: warning: missing initializer for member 'ESPConfiguration::ssid' [-Wmissing-field-initializers]
   ESPConfiguration Cnf = {0};  //Temp struct
                            ^

This way to initialize (zero out) a struct was taken from an example on the web, but apparently it is not really correct. So I wonder how does one initialize the struct correctly?

The correct form is:

ESPConfiguration Cnf = {};  //Temp struct

See: zero initialization - cppreference

Or memset(struct XXXX, 0, sizeof struct XXXX);

giova014:
The correct form is:

ESPConfiguration Cnf = {};  //Temp struct

See: zero initialization - cppreference

I tried that but it gave the same error message...

..\espconfig.cpp:20:27: warning: missing initializer for member 'ESPConfiguration::checksum' [-Wmissing-field-initializers]
   ESPConfiguration Cnf = {};  //Temp struct
                           ^

I do not want to list every member since there are arrays there and when I do not list all items in the array it still complains like this.

boylesg:
Or memset(struct XXXX, 0, sizeof struct XXXX);

Did not work:

..\espconfig.cpp:22:10: error: expected primary-expression before 'struct'
   memset(struct Cnf, 0, sizeof struct Cnf);
          ^

Taking away the initialization completely removed the error/warning messages, but what will then be in the struct data?

BosseB:
Taking away the initialization completely removed the error/warning messages, but what will then be in the struct data?

Why do you care? The first thing you do is overwrite it with data from EEPROM.

Yes in this case you are completely correct!
Why bother, indeed.
OTOH I am on a learning trip while at the same time creating the ESP8266 application we need.

Memset definately works if used properly:

typedef struct MYSTRUCT {
  int a, b, c;
};

MYSTRUCT ms;

memset(&ms, 0, sizeof(MYSTRUCT));