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

 
 
> Условная компиляция в макросе C/C++
Ivan_Kov
сообщение Mar 21 2008, 07:40
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Хочу написать макрос так, чтобы в зависимости от его аргументов, менялось его содержимое.
Ну что-то типа такого:

#define macroc(a)\
#if(a>0) \
<....> \
#else \
<....> \
#endif

только на этот код компилятор ругается
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Mar 21 2008, 07:53
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Ivan_Kov @ Mar 21 2008, 10:40) *
Хочу написать макрос так, чтобы в зависимости от его аргументов, менялось его содержимое.
Ну что-то типа такого:

#define macroc(a)\
#if(a>0) \
<....> \
#else \
<....> \
#endif

только на этот код компилятор ругается

а зачем решётки перед if и else? в этом случае а должно быть определено до компиляции и не может быть переменной


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Mar 21 2008, 08:16
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Цитата(MrYuran @ Mar 21 2008, 10:53) *
а зачем решётки перед if и else? в этом случае а должно быть определено до компиляции и не может быть переменной

Да, 'a' - константа, и не может быть переменной.
"if" в исполняемом коде - не нужен. препроцессор должен вставить требуемый код.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 21 2008, 08:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Ivan_Kov @ Mar 21 2008, 11:16) *
препроцессор должен вставить требуемый код.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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