众所周知,C标准要求在函数体的顶部声明变量。
C ++允许在任何地方声明它,就在它被使用之前。
MSVC在使用.c和.cpp源文件时遵循标准。
GCC允许在函数体中的任何地方声明变量,即使源文件是.c
由于这个原因,我在GCC中编写了大量的.c文件,而不是在MSVC中编译。我无法将它们全部重命名为.cpp。
有没有简单的方法告诉MSVC编译器将.c文件视为C ++文件?
答案 0 :(得分:4)
C89标准要求。目前的C99没有。无论如何,切换是/TP
将所有输入文件视为C ++和/Tp<file>
来处理选择的文件 - 请记住,这可能无法解决任何问题,但也会引入新的错误和< / em>它会破坏名称,因此互操作可能会受到伤害。
最好的解决方案是简单地用GCC编译C部分。
答案 1 :(得分:3)
在VisualStudio 2010中,转到项目的属性。转到配置属性 - &gt; C / C ++ - &gt;高级
对于“Compile As”,选择“Compile as C ++ Code(/ TP)。
这似乎适用于项目中的所有.c和.cpp文件。
答案 2 :(得分:2)
设置/ TP允许将任何文件编译为C ++文件和/ TC作为C-File。 但不幸的是,这是一个按文件设置。所以你必须为每个文件设置它。 也许你可以用一个小脚本来解析.vcproj文件并用/ TP替换/ TC。
答案 3 :(得分:1)