Il parser CDT segnala un errore di sintassi per l'inizializzazione struttura:C++ GNU struttura designata inizializzazione non riconosciuto in Eclipse
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;
}
Mentre GCC lists the :
form as obsolete, sembrerebbe che non è obsoleta né rimosso. In C99 utilizzerei certamente il modulo standard .<name> =
ma per C++, l':
è l'unica opzione di cui sono a conoscenza per l'inizializzazione designata.
Ho provato a impostare la mia toolchain su MinGW e Cross GCC, ma nessuno dei due sembra funzionare.
Come posso ottenere Eclipse per riconoscere questa sintassi? Non è un grosso problema per una linea, ma trasporta tutte le altre istanze della variabile poiché Eclipse non si rende conto che è stato dichiarato.
Per essere chiari, il tuo obiettivo è per gli strumenti IDE (come l'evidenziazione della sintassi) per comprendere questa sintassi? – Yakk
Il parser CDT non è correlato alla toolchain. Riconosce un numero di estensioni GCC, probabilmente non contrassegnate come obsolete. –
Sì, spero che qualcuno sia a conoscenza di un'impostazione che potrei aver sbagliato e che avrebbe fatto scattare Eclipse per riconoscerlo. Ho pensato che forse la toolchain avrebbe fatto questo, perché non avrebbe molto senso riconoscere le estensioni GNU quando si utilizza un compilatore non GNU. – altendky