Странные вещи в коде C / C (ISO C запрещает объявление ‘xxx’ без типа)

#c #c #extern

#c #c #внешний

Вопрос:

Я новичок в C / C , так что это может быть глупый вопрос, у меня следующая проблема, у меня есть метод в библиотеке c , который экспортируется с использованием extern ‘C’, и он вызывается другим методом из другого файла c. Итак, мне понадобились некоторые структуры в коде c , поэтому «разумным» решением было просто добавить структуры в файл .h первого класса и импортировать его. Когда я это сделал, произошла самая странная вещь. Код C, который работал нормально, сломался, сказав три глупости (обратите внимание, что структуры были просто перенесены из кода в заголовок). Итак, у меня есть 3 экземпляра, ошибки чтения, говорящие:

  1. Ожидается; перед * token;
  2. Iso C запрещает объявление ‘someclassname’ без типа
  3. не удалось разрешить тип ‘someclassname’

Есть идеи?

Комментарии:

1. Покажите нам код, сообщение об ошибке и команду компилятора.

2. хммм … это звучит как случай «опубликовать свой код»

3. Похоже, что класс, который вы пытаетесь использовать, не включен в файл (или заголовок). Вам нужно будет либо включить правильный файл, либо указать прямое объявление (например, class UnresolvedClassName;). Но покажите нам код.

4. Если это так ISO C forbids declaration of ... , то зачем c помечать?

5. Писать исходные файлы на нескольких языках сложно . Я предлагаю вам придерживаться одного языка для каждого исходного файла.

Ответ №1:

Компилятор считает, что «someclassname» — это имя переменной. Вы написали что-то вроде

 Employee* newguy = foo();
  

И компилятор думает, что вы дали имя необъявленной переменной, Employee, жаловался на это, жаловался, что a * не идет после имени переменной и так далее.

Посмотрите, где, по вашему мнению, вы объясняете, что такое «someclassname», потому что компилятор его не получает.

ps: опубликуйте свой код!