C++:在不知道函数名的情况下获取当前函数指针?

标签 c++ function pointers

在 Windows/MSVS/C++ 中,我可以通过指向它的名称来获取函数指针,如下所示:

void foo()
{
    auto fooPtr = &foo;
}

但是我可以在不知道函数名称的情况下做同样的事情吗?

void foo()
{
    auto fnPtr = &thisFunction; //no
}

用例:我想定义一个宏,我可以把它放在许多函数的顶部,它会声明一个指向函数的指针。例如:

#define defFnPtr auto fnPtr = &thisFunction
void foo()
{
    defFnPtr;
}
void bar()
{
    defFnPtr;
}

最佳答案

不,在标准 C++ 中没有办法获得指向“当前”函数的指针。

最好的办法可能是使用元编程:编写一个程序,在源代码中生成 auto fnPtr = &foo; 行。

也就是说,我认为这个目标不值得付出努力。

关于C++:在不知道函数名的情况下获取当前函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68615777/

相关文章:

c++ - 在函数定义之前引用字段

c - 在 C 中,我可以将字符串保留为 char*,然后使用指针指向其他字符串吗?

c - 为什么 sizeof 没有返回数组中正确的元素数量?

具有指定模板参数的 C++11 make_pair 无法编译

matlab - 一个函数如何在 Julia 中有多个返回值(相对于 MATLAB)?

php - 如何在命名空间 App\Controller 中声明一个新函数?

C++是否可以确定指针是否指向有效对象?

c++ - 这个模板定义在 C++ 中意味着什么?

c++ - 如何在没有 __thread 的情况下创建 pthread 特定变量

c++ - swap() 会导致未定义的行为吗?