Рейтинг:0

gcc-10 (10.3.0) неправильно обрабатывает анонимную структуру?

флаг br
A L
$ gcc-10 --версия
gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0

$ кошка test.c
структура А {
    в а;
};

структура Б {
    интервал б;
    структура А;
};

интервал основной (пустой)
{
    структура Б с;
    в.а = 0;
    в.б = 1;
    вернуть 0;
}

$ gcc-10 test.c
test.c:7:13: предупреждение: объявление ничего не объявляет
    7 | структура А;
      | ^
test.c: В функции «main»:
test.c:13:6: ошибка: «структура B» не имеет члена с именем «a»
   13 | в.а = 0;
      | ^

Добавление -стд=с17 не имеет никакого значения. Я проверил (с -v вариант, который cc1 вызывается из правильного места (/usr/lib/gcc/x86_64-linux-gnu/10/cc1 ). Однако исходный код должен скомпилироваться. gcc 10.2.0 (используемый, например, в Cygwin) прекрасно справляется с этим кодом:

$ gcc --версия
ССЗ (ССЗ) 10.2.0
$ gcc test.c
$

(без ошибок).

Это то, что было установлено как "gcc-10":

cc-10-base/focal-updates,focal-security,теперь 10.3.0-1ubuntu1~20.04 amd64 [установлено,автоматически]
gcc-10/focal-updates,focal-security,теперь 10.3.0-1ubuntu1~20.04 amd64 [установлен]
libgcc-10-dev/focal-updates,focal-security,теперь 10.3.0-1ubuntu1~20.04 amd64 [установлено,автоматически]

Моя система:

$ uname -a
Linux xxx 5.11.0-25-generic #27~20.04.1-Ubuntu SMP Вт, 13 июля, 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Любая помощь будет оценена!

Спасибо!

galexite avatar
флаг pk
Я думаю, что это вопрос к StackOverflow, а не к AskUbuntu.
Рейтинг:0
флаг br
A L

Выглядит как -fms-расширения неявно определяется в Cygwin, поэтому добавление его явно в gcc команда на Ubuntu решает проблему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.