C2143 в основном говорит, что компилятор получил токен, который он считает недопустимым в текущем контексте. Одним из следствий этой ошибки является то, что реальная проблема может существовать до строки, которая вызывает ошибку компилятора. Как сказал Грег, я думаю, что мы должны увидеть больше вашего кода для диагностики этой проблемы.
Я также не уверен, почему вы считаете, что это допустимый код C ++, полезен при попытке выяснить, почему он не компилируется как C? C ++ (в значительной степени) является надмножеством C, поэтому существует ряд причин, по которым действительный код C ++ может не быть синтаксически правильным кодом C, не в последнюю очередь то, что C ++ рассматривает структуры как классы!