Могут ли макросы в C ++ определять макросы? - PullRequest
0 голосов
/ 20 января 2012

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

Ответы [ 4 ]

5 голосов
/ 20 января 2012

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

1 голос
/ 20 января 2012

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

1 голос
/ 20 января 2012

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

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

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

1 голос
/ 20 января 2012

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

...