реклама на сайте
подробности

 
 
> Почему не работает #define, проект в IAR
aspID
сообщение May 22 2012, 15:10
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Проект из нескольких файлов. В основном стоят директивы #define, во включаемых заголовочниках проверяется через #ifndef и не видится. Помогает только явное указание в свойствах проекта.

F_CPU объявлен через свойства проекта, используется в delay.h - не вызывает ошибок

USART_BUF_SIZE объявлен через директиву #define в main.c и используется в USART.h - вызывает ошибку.


Прикрепленные файлы
Прикрепленный файл  src.7z ( 2.8 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение May 22 2012, 16:34
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Я Вам сейчас одну умную вещь скажу, только не обижайтесь (с)
Дело в том, что каждый .c файл транслируется отдельно и совершенно независимо от других.
Поэтому когда дело доходит до трансляции USART.c в нём (и в USART.h) не будет видно определения USART_BUF_SIZE, сделанное только в main.c.

Лучше сделать, например, так: собрать все настройки проекта в один .h-файл (константы, определения ног, светодиодов, вкл/выкл различных опций программы и тому подобное) и включать его первым во все .c-файлы проекта.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 16:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016