Der CDT-Parser meldet einen Syntaxfehler für die Struktur der Initialisierung:C++ GNU bezeichnete Struktur Initialisierung nicht in Eclipse erkannt
typedef struct MyStruct
{
int a;
float b;
};
int main(void)
{
// GNU C extension format
MyStruct s = {a : 1, b : 2};
// C99 standard format
// MyStruct s = {.a = 1, .b = 2};
return 0;
}
Während GCC lists the :
form as obsolete, so scheint es, dass es veraltet wurde nicht noch entfernt. In C99 würde ich sicherlich das Standardformat .<name> =
verwenden, aber für C++ ist die :
die einzige Option, die mir für die vorgesehene Initialisierung bekannt ist.
Ich habe versucht, meine Toolchain auf MinGW und Cross GCC einzustellen, aber keiner scheint zu funktionieren.
Wie kann ich Eclipse dazu bringen, diese Syntax zu erkennen? Es ist keine große Sache für eine Zeile, aber es führt zu jeder anderen Instanz der Variablen, da Eclipse nicht erkennt, dass es deklariert ist.
Um klar zu sein, ist Ihr Ziel für Ihre IDE-Tools (wie Syntax-Highlighting), diese Syntax zu verstehen? – Yakk
Der CDT-Parser hat nichts mit der Toolchain zu tun. Es erkennt eine Reihe von GCC-Erweiterungen, die wahrscheinlich nicht als veraltet markiert sind. –
Ja, ich hoffe, jemand ist sich einer Einstellung bewusst, die ich falsch haben könnte, die Eclipse auslösen würde, um dies zu erkennen. Ich dachte, dass die Toolchain dies vielleicht tun würde, da es nicht viel Sinn macht, GNU-Erweiterungen zu erkennen, wenn ein Nicht-GNU-Compiler verwendet wird. – altendky