а зачем решётки перед if и else? в этом случае а должно быть определено до компиляции и не может быть переменной
Ivan_Kov
Mar 21 2008, 08:16
Цитата(MrYuran @ Mar 21 2008, 10:53)
а зачем решётки перед if и else? в этом случае а должно быть определено до компиляции и не может быть переменной
Да, 'a' - константа, и не может быть переменной. "if" в исполняемом коде - не нужен. препроцессор должен вставить требуемый код.
zltigo
Mar 21 2008, 08:23
Цитата(Ivan_Kov @ Mar 21 2008, 11:16)
препроцессор должен вставить требуемый код.
Препроцесор должен делать только то, что он должен делать, а не то, что вдруг без оглядки на систему в данный момент захотелось. Пишите более сложные макросы, или как сказали в рассчете на то, что оптимизатор выкинет.
MrYuran
Mar 21 2008, 08:27
а что компилер говорит? может, после macroc(a) пробел поставить?
Ivan_Kov
Mar 21 2008, 09:01
Цитата(zltigo @ Mar 21 2008, 11:23)
Пишите более сложные макросы, или как сказали в рассчете на то, что оптимизатор выкинет.
Не совсем понял вашу мысль, можно поподробнее?
Цитата(MrYuran @ Mar 21 2008, 11:27)
а что компилер говорит? может, после macroc(a) пробел поставить?
говорит: `#' operator should be followed by a macro argument name к сожалению, пробелы тут не причем...
zltigo
Mar 21 2008, 09:34
Цитата(Ivan_Kov @ Mar 21 2008, 12:01)
Не совсем понял вашу мысль,
Сделайте, так, как MrYuran советовал и посмотрите на результат (warnings - давить). Только это на крайний случай.
axle
Mar 21 2008, 09:35
Цитата(Ivan_Kov @ Mar 21 2008, 15:01)
говорит: `#' operator should be followed by a macro argument name к сожалению, пробелы тут не причем...
Вы пытаетесь создать вложеный макрос. Препроцессор С это не поддерживает. И пробел не поможет. Если внутри вашего макроса код, то можно использовать inline функцию. Нормальный компилятор должен оптимизировать.
Вы пытаетесь создать вложеный макрос. Препроцессор С это не поддерживает. И пробел не поможет. Если внутри вашего макроса код, то можно использовать inline функцию. Нормальный компилятор должен оптимизировать.