将函数指针映射到std :: string

Pra*_*tic 1 c++ string function-pointers

是否可以将函数指针映射到std::string符合标准的C++中?

对象指针的转换函数指针甚至做指针运算都是函数指针的限制,但是在这个相关的问题中

如何格式化函数指针?

给出以下代码:

int (*funcptr)() = main;
unsigned char *p = (unsigned char *)&funcptr;
int i;

for (i = 0; i < sizeof funcptr; i++)
{
    printf("%02x ", p[i]);
}
putchar('\n');
Run Code Online (Sandbox Code Playgroud)

该代码经受了同行的审查.我有点困惑.使用数组语法访问函数指针是合法的,但指针算术不是?

这就是我现在所拥有的.我的编译器没有抱怨,并且样本大小为1的东西似乎表现得很好.

template<class F>
std::string fptr_to_str(F fptr)
{
    auto fptr_bytes = (const char*)fptr;
    return {fptr_bytes, sizeof(fptr_bytes)};
}
Run Code Online (Sandbox Code Playgroud)

Yak*_*ont 5

备用代码获取指向函数的指针的地址,并在那里提取字节.

您的代码获取函数的地址,并在那里提取字节.

这些是不同的操作.