2012-01-20 5 views
0

Мне было интересно, можно ли определить макрос в C++, который определяет другой макрос, который можно использовать в более позднем коде. Возможно ли это, или препроцессор, используемый g ++, слишком ограничен для этого?Могут ли макросы в C++ определять макросы?

+1

Это не «препроцессор, используемый g ++», который недостаточно мощный, это сам язык C++, который этого не позволяет. Если вы объясните, чего хотите, я уверен, что люди здесь могут придумать решение. – Lindydancer

+0

Как бы вы были «ограничены» этим? Поделитесь тем, что вы пытаетесь выполнить. –

ответ

5

Нет, вы не можете определить макрос в расширении другого макроса.

1

Нет, макрос нельзя определить как макрос.

1

Вы можете сделать что-то вроде этого, это не совсем то, что вы ищете, но это может помочь.

#ifdef ENABLE_MACRO_1 
#define PRINT_MACRO(varName) \ 
     std::cout<<varName<<std::endl; 
#else 
#define PRINT_MACRO(varName) \ 
     //do nothing 
#endif 

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

1

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

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