Dela via


Kompilatorfel C2078

för många initialiserare

Anmärkningar

Antalet initialiserare överskrider antalet objekt som ska initieras.

Kompilatorn kan härleda rätt tilldelning av initialiserare till objekt och inre objekt när inre klammerparenteser tas bort från initialiserarlistan. Fullständig bracing eliminerar också tvetydighet och resulterar i rätt tilldelning. Partiell bracing kan orsaka C2078 på grund av tvetydighet i tilldelningen av initialiserare till objekt.

Exempel

Följande exempel genererar C2078 och visar hur du åtgärdar det:

// C2078.cpp
// Compile by using: cl /c /W4 C2078.cpp
struct S {
   struct {
      int x, y;
   } z[2];
};

int main() {
   int d[2] = {1, 2, 3};   // C2078
   int e[2] = {1, 2};      // OK

   char a[] = {"a", "b"};  // C2078
   char *b[] = {"a", "b"}; // OK
   char c[] = {'a', 'b'};  // OK

   S s1{1, 2, 3, 4};       // OK
   S s2{{1, 2}, {3, 4}};   // C2078
   S s3{{1, 2, 3, 4}};     // OK
   S s4{{{1, 2}, {3, 4}}}; // OK
}