传递函数指针不起作用

时间:2011-03-01 03:30:28

标签: c++ c function-pointers

我有2个图书馆。库A用C编译。库B用C ++编译,但主要是C代码。

我需要在库A中调用以下函数:

foo* c_func(int64_t (*ptr_to_func)(void));

这个功能的第一件事是:

if(!ptr_to_func)
  return NULL;

ptr_to_func需要指向库B中的一个函数,该函数声明为:

int64_t bar(void);

我有一个带有调用另一个函数的main函数的cpp文件,在那里我执行以下操作:

foo* f = c_func(bar);

然后我检查f是否为空。它是。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您正在做的事情似乎是正确的,但需要注意的是,您的函数bar()应在extern "C" {部分内声明。

由于其他原因,

c_func()可能会返回NULL。在调试器中逐步执行它并查看(在c_func()开头设置断点)。