我想找到一种方法来跟踪使用宏在代码中引用函数的次数(或者任何真正的,只是更新编译时)。
我们说我有这段代码:
void n(int* d, int x) {
functionCall();
*d += x;
functionCall();
return;
}
printf("called=%d", TIMES_CALLED);
/* called=2 */
基本上是这样的。我需要确保它也是准确的,所以任何事情都会有所帮助。
答案 0 :(得分:2)
宏__COUNTER__
扩展为从0开始的整数文字,并且每次在源文件或源文件的包含头文件中使用时,它都会递增1。 __COUNTER__
在您使用预编译标头时会记住它的状态。始终定义此宏。
#include <iostream>
template<typename T>
struct Counter
{
template<int>
static void MyFunction()
{
std::cout << "Do smth." << std::endl;
}
};
#define CountMe MyFunction<__COUNTER__>
int main()
{
Counter<int>::CountMe();
Counter<double>::CountMe();
std::cout << __COUNTER__ << std::endl;
return 0;
}
Do smth.
Do smth.
2