当前位置 : 主页 > 编程语言 > c++ >

对C中的特定标题使用extern C关键字是否允许从void *转换为char *?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我使用的是用C语言编写的开源流体动力学代码.它们具有许多并行读写输入/输出的功能.我正在编写一个程序来对C中的输出进行后期分析,我希望通过包含它们的头文件在我的代码中使用
我使用的是用C语言编写的开源流体动力学代码.它们具有许多并行读写输入/输出的功能.我正在编写一个程序来对C中的输出进行后期分析,我希望通过包含它们的头文件在我的代码中使用这些函数.当我在其中包含头文件(a.h)时,会考虑printf等问题

extern "C" {
#include "a.h"
}.

但是当我尝试编译它时,错误就出现了

/Src/Parallel/al_io.c:234:5:错误:无效从’void *’转换为’char *'[-fpermissive]
   a =(void *)va;

这意味着尽管有extern关键字,它仍然不允许这样做.这是正常的吗?如果是这样,还有另一种方法可以让这些功能起作用.手动编辑它们是不可能的,因为它们中有大约数千个.
谢谢!!

Is this normal?

是. extern“C”改变了联系.该程序仍然编译为C程序.

在extern“C”函数的实现中,您可以访问C的所有功能.另一方面,它的编译就像常规的C函数一样. C程序的所有语法约束都适用于这样的函数.

If so is there another way to allow these functions to work.

您可以使用static_cast< char *>(…).

网友评论