外部“C”NULL功能指针

时间:2014-06-05 14:15:57

标签: c function pointers extern

我用C语言编写的库和C ++中我自己的代码存在问题,问题似乎是有一个函数指针被声明为extern" C"但是指向一个C ++函数(在我的例子中,当我从库中调用函数时是NULL指针),它没有被声明为extern" C"。

现在代码:

function_from_lib( ... , (int (*)()) NULL);

在这里你可以看到我将函数指针传递给函数。问题是我需要一个函数指针,它也指向NULL但函数指向" NULL"点(愚蠢)应该声明为extern "C"。有人知道如何解决这样的问题或解决方法吗?我不知道函数如何在内部查找,但它需要一个NULL函数指针来完成我的任务。

所以,如果我必须传递另外一个函数,如下所示:

extern "C" int fkt()
{ 
return NULL;
} 

它会工作,但我需要一个NULL函数指针。

编辑:

这很有效:

extern "C" int fkt()
{ 
return NULL;
} 
...

function_from_lib( ... , fkt);

这不会起作用:

int fkt()
{ 
return NULL;
} 
...

function_from_lib( ... , fkt);

现在我需要传递一个NULL函数指针

function_from_lib( ... , (int (*)()) NULL);

并且它不起作用,因为它不是extern" C"

EDIT2(ERROR UPDATE)

ERROR:
argument of type "I32(*)()" is incompatible with parameter of type "I32(*)() C"

1 个答案:

答案 0 :(得分:2)

也许可以使用typedef:s。 (我无法访问抱怨您的代码的编译器,所以我无法验证这一点)。例如:

extern "C"
{
  typedef int (*my_fp_type)(void);
}

function_from_lib(... , (my_fp_type)0);