【发布时间】:2012-07-08 07:33:37
【问题描述】:
我们在“c”中有很好的代码库。现在,我们正在为所有新模块迁移到 c++。我有一个案例在旧的 c 代码库中使用几个 c++ 类。单独地,两者都有效,即 c++ 模块和 c 模块单独工作并提供所需的 o\p。
当我混合使用它们时,即在 A.c 中调用 c++ 类时,它会引发大量与旧代码相关的错误。
在我们的 makefile.am 中,我们之前有一个选项 cc=gcc,现在我们将其更改为 cc=g++,因为它抛出了一些错误。最后带有 make 的 makefile.am 创建了一个库,我们说 libx.a。 makefile.am 包含各种早期的源文件,即 A.c,x.c,y.c....
我最初在 A.c,x.c 下修复了错误,假设它们使用新的 g++ 编译器。现在,它开始在 x.c 下抛出错误,像这样我们有各种源文件。
修复所有这些非常繁琐。我相信我缺少一些与这些错误相关的编译器标志选项。现在,这些错误中的大多数是类型转换错误,我使用 static_cast 等对其进行了转换。除此之外,很少有其他错误。但是,该代码是 c 中的工作代码,它只是混合和更改 makefile 会引发这些错误。
问: 1.如何摆脱这些错误? 2. 是否有任何编译器标志我需要使用以最小的努力继续工作? 3. 在这些过程中我做错了什么吗? 4. 大家建议对 makefile.am 进行任何更改吗?
对此的任何帮助表示赞赏。如果 Q 不清楚,请告诉我。
注意:我们使用 autoreconf、configure 和 make 运行我们的应用程序。
问候, 桑托什
【问题讨论】:
-
打印出的错误是什么?此外,根据我的个人经验,g++ 在编译 C 代码时应该没有真正的问题,因此了解错误将有很大帮助。
-
您永远不应该在 Makefile.am 中指定
CC或CXX。这些是用户定义的变量,应该在运行配置时分配。