【发布时间】:2013-11-05 01:55:00
【问题描述】:
GCC 会根据文件扩展名(.c、.cc)、命令行参数 (-x) 或直接调用适当的编译器(例如,g++ 而不是 gcc)在编译器之间自动切换。
有没有办法在文件中使用编译指示覆盖这些?
更新,评论后:
我正在将当前为 50/50 C 和 C++ 的代码库转换为使用 C++ 编译器完全编译。这是为了允许当前的“C”模块调用我无法更改(并且不希望包装)的新 C++ 基础。对于真正是 C 的文件,我想将扩展名保留为 .c,即使它们现在具有 C++ 链接。我认为将它们保留为“.c”表明它们为何保持原样(我在这里考虑后代!;-))但更改构建系统以适应每个更改的 C 文件名也是一项艰巨的工作。更糟糕的是,一小部分 C 文件不会完全转换为 C++,因此如果它们不调用 C++ 基础,我想将它们保留为 C。但重写它们不是一种选择,稳定性的风险项目太棒了。
【问题讨论】:
-
显而易见的解决方案是使用
.c后缀命名 C 文件,使用.cc或.cpp后缀命名 C++ 文件。我想不出任何理由不使用这样的约定。您的环境中是否有某些东西阻止您这样做? -
@KeithThompson 我已经更新了这个问题,因为我有太多要写的评论! :-)
-
C++编译器编译的源文件是C++源文件,应该有
.cpp或.cc后缀。我知道为更改的文件名更改构建系统是一项艰巨的工作,但我认为这是最好的方法。