众所周知,C标准要求在函数体顶部声明变量。
C++ 允许在任何地方声明它,就在它被使用之前。
MSVC 在处理 .c 和 .cpp 源文件时遵循标准。
GCC 允许在函数体的任何地方声明变量,即使源文件是.c
由于这个原因,我有大量 .c 文件在 GCC 中编译得很好,在 MSVC 中编译得不好。我无法将它们全部重命名为 .cpp。
是否有任何简单的方法告诉 MSVC 编译器将 .c 文件视为 C++ 文件?
最佳答案
C89 标准要求。当前的 C99 没有。无论如何,开关是/TP
将所有输入文件视为 C++ 和 /Tp<file>
处理选定的一个 - 请记住,这可能不会解决任何问题,而且还会引入新的错误并且它会破坏名称,因此互操作性可能会受到影响。
最好的解决方案是使用 GCC 简单地编译 C 部分。
关于c++ - MSVC 与 GCC : variable declaration in function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754126/