gpt4 book ai didi

c++ - 如何在每个函数的入口处添加代码?

转载 作者:IT老高 更新时间:2023-10-28 23:09:33 34 4
gpt4 key购买 nike

我想在每个函数调用之前添加一些代码来做一些检查。我知道的唯一方法是:

#define SOME_CODE printf("doing something...");

class testObject
{
void function1()
{
SOME_CODE
...
}
void function2()
{
SOME_CODE
...
}
}

有没有更简洁的方法来实现这一点?我正在寻找一种方法,因此我不必手动将“SOME_CODE”添加到每个函数中。

最佳答案

对于 gcc,有一个与其他人发布的 MSVC 类似的解决方案作为答案:

#include <iostream>
int depth=-1;
extern "C" {
void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function));
void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
void __cyg_profile_func_enter (void *func, void *caller)
{
depth++;
}


void __cyg_profile_func_exit (void *func, void *caller)
{
depth--;
}
}

class Foo {
public:
void bar() {
std::cout << "bar: " << depth << std::endl;
}
};

int main() {
Foo f;
f.bar();
return 0;
}

使用 g++ -Wall -Wextra -finstrument-functions 编译。但请注意不要从仪器 Hook 中调用仪器函数! (有关排除事物的方法,请参见手册页)

关于c++ - 如何在每个函数的入口处添加代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081123/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com