Я хочу отслеживать расширение макросов - сколько раз расширялся макрос и какие аргументы возникают при расширении.Следите за расширением макроса
Например,
У меня есть макрос может выглядеть следующим образом:
#define mymacro(x) int x
и в моем коде у меня есть что-то вроде этого:
mymacro(a);
mymacro(b);
в конце препроцессора расширение (о да, есть ли способ сделать конкретный макрос, чтобы стать последним, чтобы расширить?), я хотел бы знать, сколько раз использовался mymacro и какие аргументы передавались. В этом случае это будет 2 раза, а args - a и b.
Я изучал boost-preprocessor lib. У них BOOST_PP_ARRAY, но я не знаю, как сделать его «статическим», чтобы я мог использовать его позже.
Я нашел что-то в BOOST_PP_COUNTER. Похоже, BOOST_PP_COUNTER - это то, что может поддерживать свое состояние в фразе препроцессора. Но я все еще не понимаю, как делать то, что я хотел.
Это может быть сделано путем добавления строки к макросу, который выводит сообщение компилятора, если ваш компилятор поддерживает это. –
Можете ли вы уточнить? Я использую Clang –
Это не сразу понятно мне, но вы говорите о проверке того, что происходит, и хотите, чтобы результат (то есть, с которым он был вызван, и т. Д.) Был доступен при предварительной обработке, чтобы вы могли что-то сделать с этим, верно? –