MSVC vs GCC:函数中的变量声明

时间:2011-07-19 21:04:19

标签: c++ c gcc visual-studio-2010

众所周知,C标准要求在函数体的顶部声明变量。

C ++允许在任何地方声明它,就在它被使用之前。

MSVC在使用.c和.cpp源文件时遵循标准。

GCC允许在函数体中的任何地方声明变量,即使源文件是.c

由于这个原因,我在GCC中编写了大量的.c文件,而不是在MSVC中编译。我无法将它们全部重命名为.cpp。

有没有简单的方法告诉M​​SVC编译器将.c文件视为C ++文件?

4 个答案:

答案 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)