我们正在尝试修改一些现有的C项目,即我们正在尝试从C代码中进行一些C++函数调用.我们尝试将编译器从gcc更改为g ++,但由于不兼容性,存在多个编译错误.我们要做的是在C代码中调用一些C++函数,而不对现有代码进行任何更改.简单地改变编译器似乎没有做到这一点.因此,我们试过以下:
#includeextern "C" { int func(int new ) { printf("in new func()\n"); } }
当我使用命令编译它
g ++ -c hello.c -o hello
我们得到以下错误
hello.c:9: error:expected ‘,’ or ‘...’ before ‘new’.
现在我们知道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++函数调用.
new
是一个关键字,因此您无法调用变量new
.但即使你可以,我也不确定你为什么会这么做,因为它难以理解.
即使你正在使用extern "C"
你仍然在编译g++
c ++编译器,它会抱怨这个.
基本上C代码不能总是在c ++中保持不变,因为c ++引入了一些关键字.这是其中一个时间,你别无选择,只能更改一些现有的代码C代码,使其编译为c ++代码.