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



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

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

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

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

我有大量的。c文件在GCC中编译得很好,而不是在MSVC中。我不能把它们都重命名为。cpp。

是否有任何简单的方法告诉MSVC编译器将。C文件视为c++文件?

C89标准要求。现在的C99没有。无论如何,切换是/TP将所有输入文件视为c++, /Tp<file>将处理一个选择文件-请记住,这可能不会解决任何问题,但也会引入新的错误它会混淆名称,因此互操作可能会受到伤害。

最好的解决方案是用GCC编译C部分。

在VisualStudio 2010中,转到项目的属性。转到配置属性-> C/c++ ->高级

对于"Compile As"选择"Compile As c++ Code (/TP).

这似乎适用于项目中的所有.c和.cpp文件

设置/TP允许将任何文件编译为c++文件,将/TC编译为C文件。但不幸的是,这是按文件设置的。你需要为每个文件设置这个。也许你可以用一个小脚本,解析。vcproj文件,用/TP代替/TC。

/Tp

http://msdn.microsoft.com/en-us/library/032xwy55 (v = vs.80) . aspx

MSVC只支持C89

最新更新