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

 
 
> Не отрабатывает #define, глюки работы директивы define
aspID
сообщение Jan 6 2008, 10:27
Сообщение #1


Местный
***

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



Столкнулся с тем, что не отрабатывает. Приходится ставить все в опциях компилятора. Не понимаю, почему. Поиску либо разучился задавать вопросы, либо на самом деле ни у кого такой проблемы не возникало и здесь ее не обсуждали (наверное, вряд ли, но прошу сильно не сердиться и по возможности не просто отослать в поиск, а дать ссылку)

Код
#ifdef DEBUG
//Генерация импульса синхронизации
DDRD |= 1 << PD1;
PORTD |= 1 << PD1;
_delay_ms( 1 );
PORTD &= ~(1 << PD1);
#endif //DEBUG


Пока явно в опциях не поставишь DEBUG, в любом из файлов хоть заставься. Точно также не отрабатывает

Код
#ifndef F_CPU
  #define F_CPU 3686400UL
#endif


В используемом далее контексте ругается, что не определено F_CPU
Код
#ifndef F_CPU
# warning "F_CPU not defined for <aspID/delay.h> using 1MHz"
# warning "To define F_CPU go Proj->Opt->C/C++->Defined symbols"
# define F_CPU 1000000UL
#endif

Но и этот # define очень похоже, что не отрабатывает.
help.gif
Заранее спасибо и всех с наступающим Рождеством! santa2.gif


ЗЫ: до сих пор не могу победить проблему, если пишу с использованием классов и НЕ использую конструктор по умолчанию - кричит "дай!" sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aspID
сообщение Jan 9 2008, 04:13
Сообщение #2


Местный
***

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



Цитата
Еще придется думать о переполнении

Макрос. Срабатывает при компиляции. На "большом" компутере. Переполнение... Нет, представляю, как оно может случиться, но по-моему, если не формировать секундные задержки наносекундным макросом то переполниться сложно blush.gif

Про точность понима, а вот про скорость не понима... Что будет работать быстрее и почему?
Go to the top of the page
 
+Quote Post
Николай Z
сообщение Jan 9 2008, 08:16
Сообщение #3


Местный
***

Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930



Цитата(aspID @ Jan 9 2008, 07:13) *
Макрос. Срабатывает при компиляции. На "большом" компутере. Переполнение... Нет, представляю, как оно может случиться, но по-моему, если не формировать секундные задержки наносекундным макросом то переполниться сложно blush.gif

Про точность понима, а вот про скорость не понима... Что будет работать быстрее и почему?

Отнюдь... У Вас там параметр x присутствует... Потому полностью при компиляции не сработает.
Если деление сначала - то это должно сработать при компиляции, а вот умножение при исполнении...
Если наоборот - первым умножение - то все будет работать только при исполнении - отсюда и разница в быстродействии... А переполнение возможно в зависимости от реализации целочисленной арифметики при умножении - я не знаю деталей вашего проца.

Сообщение отредактировал Николай Z - Jan 9 2008, 08:17
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 9 2008, 11:05
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Baser @ Jan 9 2008, 10:03) *
А вот насчет переполнения сам не уверен: компилятор при константе UL будет считать в 32-разрядных целых или в 64-разрядных?
UL - 32 разрядные. ULL - 64 разряда
Цитата(Николай Z @ Jan 9 2008, 10:16) *
Отнюдь... У Вас там параметр x присутствует... Потому полностью при компиляции не сработает.
Отнюдь. Если параметр x в точке использования макроса - константа, то IAR все выражение вычислит на этапе компиляции (а в приведенном в посте №1 коде там именно константа). Если переменная - то да, на этапе исполнения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
aspID
сообщение Jan 9 2008, 11:57
Сообщение #5


Местный
***

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



Цитата(Сергей Борщ @ Jan 9 2008, 17:05) *
Отнюдь. Если параметр x в точке использования макроса - константа, то IAR все выражение вычислит на этапе компиляции (а в приведенном в посте №1 коде там именно константа). Если переменная - то да, на этапе исполнения.

Спасибо! Самый понравившийся ответ smile.gif
Видимо, именно потому, что не подумал о возможности подстановки вместо x "неконстанты" я и не мог понять, почему так. На всяческий случай подправил "универсально" в своих макросах - чтобы сначала выполнялось деление.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aspID   Не отрабатывает #define   Jan 6 2008, 10:27
- - Baser   А как вы определяете, что не отрабатывает? Примеры...   Jan 6 2008, 11:02
- - zltigo   Цитата(aspID @ Jan 6 2008, 12:27) Столкну...   Jan 6 2008, 12:08
- - aspID   ЦитатаА как вы определяете, что не отрабатывает? Н...   Jan 6 2008, 12:38
|- - zltigo   Цитата(aspID @ Jan 6 2008, 14:38) Или по ...   Jan 6 2008, 13:01
||- - aspID   Цитата(zltigo @ Jan 6 2008, 19:01) Макрос...   Jan 8 2008, 13:33
||- - Сергей Борщ   Цитата(aspID @ Jan 8 2008, 15:33) понЯл, ...   Jan 8 2008, 14:05
||- - zltigo   Цитата(aspID @ Jan 8 2008, 15:33) Я сдаюс...   Jan 8 2008, 20:20
|- - Baser   Цитата(aspID @ Jan 6 2008, 14:38) Ну, хот...   Jan 6 2008, 15:14
- - aspID   называется "почувствуй себя..." завтра(с...   Jan 7 2008, 20:51
|- - zltigo   Цитата(aspID @ Jan 7 2008, 22:51) Правда,...   Jan 7 2008, 21:22
- - aspID   ЦитатаКанает, но исключительно для одного файла ma...   Jan 8 2008, 03:57
|- - zltigo   Цитата(aspID @ Jan 8 2008, 05:57) Я почем...   Jan 8 2008, 07:12
|- - Baser   Практическая рекомендация к теоретическим объяснен...   Jan 8 2008, 08:34
|- - Сергей Борщ   Цитата(zltigo @ Jan 8 2008, 09:12) в пред...   Jan 8 2008, 08:38
|- - Николай Z   zltigo сказал: Цитата(zltigo @ Jan 8 2008, 10...   Jan 8 2008, 08:59
|- - Dog Pawlowa   Цитата(Николай Z @ Jan 8 2008, 12:59) А я...   Jan 8 2008, 10:14
|- - Николай Z   Цитата(Dog Pawlowa @ Jan 8 2008, 13:14) А...   Jan 8 2008, 15:07
- - aspID   ЦитатаЕсли это обида Сергей, Вовсе даже нет! П...   Jan 8 2008, 15:05
|- - Baser   Цитата(aspID @ Jan 9 2008, 06:13) Макрос....   Jan 9 2008, 08:03
- - Baser   Цитата(zltigo @ Jan 8 2008, 22:20) А что ...   Jan 9 2008, 12:05
- - zltigo   Цитата(Baser @ Jan 9 2008, 14:05) Так что...   Jan 9 2008, 13:32
- - Сергей Борщ   Цитата(zltigo @ Jan 9 2008, 15:32) а то, ...   Jan 9 2008, 13:42
- - zltigo   Цитата(Сергей Борщ @ Jan 9 2008, 15:42) ....   Jan 9 2008, 16:10
- - Николай Z   __delay_cycles() - это тяжелое наследие 8-ми разря...   Jan 9 2008, 20:42
- - zltigo   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 20:54
|- - dxp   Цитата(zltigo @ Jan 10 2008, 02:54) Естес...   Jan 10 2008, 03:49
|- - Сергей Борщ   Цитата(dxp @ Jan 10 2008, 05:49) Вообще, ...   Jan 10 2008, 08:16
|- - Николай Z   Цитата(Сергей Борщ @ Jan 10 2008, 11:16) ...   Jan 10 2008, 09:05
|- - Непомнящий Евгений   Цитата(Николай Z @ Jan 10 2008, 12:05) А ...   Jan 10 2008, 09:35
|- - Николай Z   Цитата(Непомнящий Евгений @ Jan 10 2008, 12...   Jan 10 2008, 09:47
|- - Baser   Цитата(Николай Z @ Jan 10 2008, 11:47) По...   Jan 10 2008, 11:42
|- - Николай Z   Цитата(Baser @ Jan 10 2008, 14:42) Чесно ...   Jan 11 2008, 21:40
|- - Baser   Цитата(Николай Z @ Jan 11 2008, 23:40) То...   Jan 11 2008, 23:01
|- - zltigo   Цитата(Baser @ Jan 12 2008, 01:01) ...где...   Jan 11 2008, 23:13
|- - Baser   Цитата(zltigo @ Jan 12 2008, 01:13) Гаран...   Jan 12 2008, 11:34
|- - Николай Z   Цитата(Baser @ Jan 12 2008, 14:34) Интере...   Jan 12 2008, 11:54
|- - Baser   Цитата(Николай Z @ Jan 12 2008, 13:54) .....   Jan 12 2008, 11:58
|- - Николай Z   Цитата(Baser @ Jan 12 2008, 14:58) Соглас...   Jan 12 2008, 12:08
- - IgorKossak   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 21:41
- - Baser   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 22:11


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

 


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


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