2016-12-07 2 views

ответ

15

Рассмотрим следующий код:

#ifdef foo 
    foo(); 
#endif 

Если вы хотите сниппет, как выше, чтобы вызвать функцию foo, вам нужно определить foo. Однако, если вы просто

#define foo 

то имя функция foo будут заменены пустым маркером, а первый фрагмент код препроцессор для всего ();. Если, однако, вы

#define foo foo 

тогда первый фрагмент будет предобработки в foo(); как положено.

+0

хорошо, это хороший пример! Спасибо – IljaBek

6

Trick, котор нужно обеспечить, что #if defined(__arch_swahb32) проходит, но не заменяет. (Часто используется для реализации макро-функций типа)

+0

благодарим вас за ответ! – IljaBek

Смежные вопросы