我们正在尝试修改一些现有的C项目,即我们正在尝试从C代码中进行一些C++函数调用.我们尝试将编译器从gcc更改为g ++,但由于不兼容性,存在多个编译错误.我们要做的是在C代码中调用一些C++函数,而不对现有代码进行任何更改.简单地改变编译器似乎没有做到这一点.因此,我们试过以下:
#include <stdio.h>
extern "C"
{
int func(int new ) {
printf("in new func()\n");
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用命令编译它
g ++ -c hello.c -o hello
我们得到以下错误
hello.c:9: error:expected ‘,’ or ‘...’ before ‘new’.
Run Code Online (Sandbox Code Playgroud)
现在我们知道new是c ++关键字.如前所述,我们试图不对现有的C代码进行任何修改.有什么建议 ?
这些不是唯一的错误.还有与结构声明相关的其他错误.
attr.c:75:错误:在'.'之前预期的primary-expression 代币
在attr.c,第75行是
static post_op_attr error_attr = {.attributes_follow = FALSE};
问题是在代码中还有其他C样式的结构声明和初始化,所以即使我们重命名变量名,我们仍然需要修改C程序的其他部分.因此,我们正在寻找一种方法来在不修改现有C代码的情况下向C代码添加C++函数调用.