CDT parser zgłasza błąd składni dla inicjalizacji struktury:C++ GNU wyznaczona struktura inicjalizacji nie ujęte w 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;
}
Podczas GCC lists the :
form as obsolete, wydaje się, że nie została zaniechana ani usunięte. W C99 z pewnością korzystałbym ze standardowego formularza .<name> =
, ale dla C++, :
jest jedyną opcją, o której wiem, ze względu na wyznaczoną inicjalizację.
Próbowałem ustawić moje toolchain zarówno MinGW i Cross GCC, ale nie wydają się działać.
Jak mogę sprawić, aby Eclipse rozpoznał tę składnię? To nie jest wielka sprawa dla jednej linii, ale przenosi się do każdej innej instancji zmiennej, ponieważ Eclipse nie zdaje sobie sprawy, że jest zadeklarowana.
Dla jasności, twoim celem jest zrozumienie tej składni przez narzędzia IDE (takie jak podświetlanie składni). – Yakk
Analizator składni CDT nie jest powiązany z łańcuchem narzędzi. Rozpoznaje wiele rozszerzeń GCC, prawdopodobnie nie tych oznaczonych jako przestarzałe. –
Tak, mam nadzieję, że ktoś jest świadomy ustawienia, które może mieć błąd, który mógłby spowodować, że Eclipse to rozpozna. Pomyślałem, że być może toolchain to zrobi, ponieważ nie byłoby sensu rozpoznawać rozszerzenia GNU, gdy używa się kompilatora innego niż GNU. – altendky