【发布时间】:2015-03-04 11:14:25
【问题描述】:
出于调试目的,我想打印存储在我的 std::function 中的函数指针的地址。我可以保证 std::function 将指向 c 风格的函数或 lambda。有没有办法做到这一点?
否则我将不得不在添加函数指针时将其存储在内存中并修改所有 lambdas。
我尝试在这里使用答案https://stackoverflow.com/a/18422878/274249,但它似乎不起作用。
一些示例代码:
std::function<void()> func = commands.front();
void * fp = get_fn_ptr<0>(func);
void * bb = &glBindBuffer;
printf("bb is %x\n", bb); // Outputs 5503dfe0
printf("fp is %x\n", fp); // Should be the same as above, but outputs 4f9680
【问题讨论】:
-
target<>()成员不适合您? -
我想知道,但它似乎总是返回 null: "typedef void (*glBindBufferfp)(GLenum target, GLuint buffer); void * adsf = func.target
();"注意我使用的是视觉工作室。