众所周知,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