struct
{
//...
} A,B,C;
Это должно об'являть три переменных, типом которых является (безымянный) тип этой структуры.
Однако компилятор сообщает, что вместо A,B,C он ожидает идентификаторы. Но ведь это и есть идентификаторы!
Проверяю на кириллицу -- не подходит, буквы латинские. Заменяю на A0,B0,C0 -- всё работает.
Странно.
ОКАЗАЛОСЬ
что в заголовочном файле уже были строки:
#define A 0
#define B 1
#define C 2
В итоге последняя строка определения переменных после подстановок выглядела так:
} 0,1,2;
Да, тут идентификаторов действительно нет.
Главное, что в наличии таких дефайнов в заголовочном файле виноват я сам. Сначала я вместо об'ектов собирался использовать их условные номера. И подстановочные константы назвал по смыслу теми же именами. И забыл об этом.