计算在代码中引用函数的次数

Count times a function is referenced in code

本文关键字:函数 引用 代码 计算      更新时间:2023-10-16

我想找到一种方法来使用宏(或者实际上任何东西,只是在编译时更新(跟踪代码中引用函数的次数。

假设我有以下代码:

void n(int* d, int x) {
    functionCall();
    *d += x;
    functionCall();
    return;
}
printf("called=%d", TIMES_CALLED);
/* called=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