我们在“c”中有很好的代码库。现在,我们正在转向所有新模块的c ++。我有一个案例,在旧的C代码库中使用很少的c ++类。单独地,两个工作,即c ++模块和c模块单独工作,并提供所需的o \ p。
当我混合它们,即在A.c中调用c ++类时,它会抛出大量与旧代码相关的错误。
在我们的makefile.am中,我们之前曾经有过选项cc = gcc,现在我们在抛出一些错误之后将其更改为cc = g ++。 make末尾的makefile.am创建了一个lib,让我们说libx.a. makefile.am包含各种早期的源文件,即A.c,x.c,y.c ....
我最初在A.c,x.c下修复了错误,假设它们是新的g ++编译器。现在,它开始在x.c下抛出错误,就像我们有各种源文件一样。
解决所有问题非常繁琐。我相信我错过了一些与这些错误相关的编译器标志选项。现在,大多数这些错误都是类型转换错误,我使用static_cast等转换它们。除此之外,很少有misc错误。但是,代码是c中的一个工作代码,它只是混合和更改makefile会抛出这些错误。
问: 1.如何摆脱这些错误? 2.我是否需要使用任何编译器标志来继续以最小的努力工作? 3.在这些过程中有什么东西我做错了吗? 4.对于makefile.am的任何更改,你们建议吗?
对此有任何帮助表示赞赏。如果Q不清楚,请告诉我。
注意:我们使用autoreconf,configure和make运行我们的应用程序。
此致 Santhosh
答案 0 :(得分:2)
make将使用$CC
或$(CXX)
,具体取决于文件的扩展名,并且可以同时使用这两者。例如,以*.cpp
结尾的文件使用$(CXX)
编译,文件以*.c
结尾$(CC)
。因此,您不必将cc
或CC
全局设置为g++
,除非您的C
代码经过适当修改后编译为C ++。