C Спецификация контекста c Макрос - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь сделать несколько «макросов c», в результате чего вводится другой код в зависимости от контекста макроса. Позвольте мне привести пример.

void foo(int _hidden) {
MACRO(1)
}

void bar() {
MACRO(2)
}

Я бы хотел, чтобы макрос обнаружил, что переменная _hidden была определена, и соответствующим образом изменил свою реализацию (чтобы использовать эту переменную).

Я понимаю что препроцессор представляет собой простую текстовую замену и не знает ни одного символа в коде C, поэтому я попытался сделать что-то вроде этого.

void foo(int _hidden) {
#define _IN_SPECIAL_FUNCTION
MACRO(1)
#undef _IN_SPECIAL_FUNCTION
}

void bar() {
MACRO(2)
}

#ifdef _IN_SPECIAL_FUNCTION
#define MACRO(a) myImplementation((a) + _hidden)
#else
#define MACRO(a) myImplementation(a)
#endif

Однако это тоже не работает. Более того, в моем фактическом коде я использую макросы для определения сигнатуры моих «специальных функций» и хотел бы, чтобы этот макрос (вместе с соответствующим конечным макросом) был тем, что определяет, находится ли МАКРОС в том или ином контексте.

Пожалуйста, дайте мне знать, если мне нужно дать дополнительные разъяснения.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...