c++ - MSVC 与 GCC : variable declaration in function

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

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

相关文章:

c++ - 在 Arduino 中除以两个整数

c - 如何在 C 中使用 calloc()?

linux - 避免从 Linux 上的可执行文件中导出符号

c - 在 C 中使用类似网格的数据

c++ - 尝试在 Windows 10 中通过 cmake 在 Visual Studio Code 中使用 vcpkg 安装 SDL2

c - 哪个 gcc 选项可以为带有直接操作数的 SSE 内在函数启用循环展开?

C++ C2100 初始化结构变量时的非法间接访问

c++ - 同一类的相同实例但行为不同。可能的 UB

c++ - operator = 模板类中的重载

c - 开机时自动启动进程