我使用的是用C语言编写的开源流体动力学代码.它们具有许多并行读写输入/输出的功能.我正在编写一个程序来对C中的输出进行后期分析,我希望通过包含它们的头文件在我的代码中使用
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 *>(…).