Перейти к содержанию
    

последовательность компиляции

Здравствуйте!

 

опять я с ламерским вопросом ;-)

main.c компилится с includes.h, в includes.h есть uart.h

в uart.h определяю новую переменную int uRXcount;

в main.c инициализирую переменную uRXcount = 1;(для примера)

при компиляции получаю

Error[Pe020]: identifier "uRXcount" is undefined C:\Project\ModBusTCP\app\main.c 501

 

И что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в uart.h определяю новую переменную int uRXcount;

Error[Pe020]: identifier "uRXcount" is undefined C:\Project\ModBusTCP\app\main.c 501

А как вы определяете переменную?

Обычно в .h файлах переменные объявляются как extern

extern int uRXcount;

что бы не было конфликтов если .h файл включается в несколько с файлов.

 

При этом в одном из с файлов эта переменная должна быть определна. (иначе линкер потом ее не найдет).

 

Но в вашем случае ошибка сообщает о том что переменная вообще не определена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выложите примерчик, который у вас не компилируется. Если h-файлы вы включаете (#include ".."), то раздельная компиляция тут не при чем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю.

Я написал в uart.h файле extern int uRXcount;

 

и в uart.с файле int uRXcount; (еxtern тоже пробовал подставлять)

 

всё равно получаю

Error[Pe020]: identifier "uRXcount" is undefined C:\Project\ModBusTCP\app\main.c 501

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всё равно получаю

Error[Pe020]: identifier "uRXcount" is undefined C:\Project\ModBusTCP\app\main.c 501

Это значит описание переменной компилер не видит!

Судя по всему вы используете IAR

можно посмотреть в окне workspace зависимости файла main.c там есть файл uart.h?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это значит описание переменной компилер не видит!

Судя по всему вы используете IAR

можно посмотреть в окне workspace зависимости файла main.c там есть файл uart.h?

Покажите как включен UART.h какие скобки <> или "".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выложите примерчик, который у вас не компилируется. Если h-файлы вы включаете (#include ".."), то раздельная компиляция тут не при чем...

в includes.h мой хедер описан так: #include "uart.h"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дайте минимальный пример, который у вас не компилируется. Т.е. выкиньте все, оставьте только объявление этой переменной, ее инициализацию, включение файлов и выложите сюда.

Скорее всего, файл с объявлением не подключен к main.c (например, что-то напутали с ifdef)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покорнейши благодарю за идею с ifdef!

Код то чужой! я в него внедряюсь и не просёк сразу всех связей

Получилось!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...