【问题标题】:Force file to be compiled as C, using a directive from the file itself使用文件本身的指令强制将文件编译为 C
【发布时间】:2022-01-15 03:45:32
【问题描述】:

我的 C++ 项目中有一些旧代码文件,需要编译为 C 代码 - 整个代码库设置为编译为 C++。 我正在使用 Visual Studio,但我宁愿避免从项目属性中设置此每个文件,而宁愿使用某种 #pragma 指令(如果可能)。

我四处寻找,但一无所获,我能想到的关闭是添加一个#ifdef,它检查__cplusplus,如果这样做会失败。

基本上我正在寻找一种从源代码注入/Tc, /Tp, /TC, /TP (Specify Source File Type) 命令的方法。

【问题讨论】:

  • 重命名文件,使其名称以.c 结尾。并且,如有必要,从项目中删除旧文件并添加新文件。
  • 同时删除任何“#ifdef __cplusplus extern "C",以提高编译为 C++ 时出现编译错误的几率。
  • 这是什么意思? “整个代码库设置为编译为 C++” 你是否将 .c 文件编译为 C++?
  • 在某一时刻,所有源文件(.c.cpp)的编译器都切换为编译为 C++,但仍然需要将一些外部内容编译为 C

标签: c++ c visual-studio pragma


【解决方案1】:

“默认情况下,CL 假定扩展名为 .c 的文件是 C 源文件,扩展名为 .cpp 或 .cxx 的文件是 C++ 源文件。”

因此,如果需要,请重命名文件并将新的 c 文件放入您的项目中。

如果需要设置编译器选项: Set compiler

【讨论】:

  • 是的,我意识到我必须这样做,希望我可以避免重命名
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多