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

 
 
> Почему не работает #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
Ответов
aspID
сообщение May 22 2012, 17:33
Сообщение #2


Местный
***

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



надо же... даже все ваши идеи понял! sm.gif
Действительно, хорошие мысли! Надо взять на вооружение...
Go to the top of the page
 
+Quote Post
aspID
сообщение May 23 2012, 02:35
Сообщение #3


Местный
***

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



Цитата(aspID @ May 23 2012, 00:33) *
Действительно, хорошие мысли! Надо взять на вооружение...
Вот что получилось с утреца: USART_conf.h
Код
#ifdef _COMMON_CONFIG_PRESENT_
  #include "config.h"
#else
  // Put parameters here
#endif
config.h
Код
#define _COMMON_CONFIG_PRESENT_
#define ENABLE_BIT_DEFINITIONS
#define USART_BUF_SIZE 32 // Cyrillic SMS len 70
В дальнейшем так и буду поступать, спасибо! a14.gif
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 23 2012, 08:04
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(aspID @ May 23 2012, 06:35) *
Код
#ifdef _COMMON_CONFIG_PRESENT_
  #include "config.h"
#else
  // Put parameters here
#endif


Код
#define _COMMON_CONFIG_PRESENT_
#define ENABLE_BIT_DEFINITIONS
#define USART_BUF_SIZE 32 // Cyrillic SMS len 70
В дальнейшем так и буду поступать, спасибо! a14.gif

А Вы только в config.h определили #define _COMMON_CONFIG_PRESENT_? Тогда проверка не имеет смысла, всегда ветка else выполняется, так как символ не определен ранее.
И посмотрите, пожалуйста, как написаны заголовочные файлы, например, для Вашего компилятора. Посмотрите, что ещё подключается автоматически с файлом описания применяемого микропроцессора. Такой подход весьма распространен и, на мой взгляд, удобен.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 15:12
Рейтинг@Mail.ru


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