c++ - 适用于 Windows 的 MinGW 编译器,使用 GCC、C99 与 GNU99

标签 c++ c compiler-construction mingw c99

我正在使用适用于 Windows 的 MinGW 编译器。我正在用 C 编写一些程序。我读到的大部分文章似乎已经过时了……我最后读到的 C99 在 GCC 中是不完整的,这仍然是真的吗?我真正的问题是设置 C99 和 GNU99 之间的跨平台兼容性......我应该避免使用 GNU99 设置及其扩展并坚持使用 C99 吗?我是这个 MinGW 编译器集的新手,因为我一直使用 Visual Studio 并决定尝试一些新的东西……现在我正在使用这些设置进行编译……

-march=native -O3 -std=gnu99

对于使用此编译器制作 C 程序以及制作 C++ 程序,我应该输入任何推荐的编译器命令吗?

我想制作一个与 Windows、Mac 和 Linux 兼容但首先与大多数 Windows 兼容的简单程序。

最佳答案

如果你想要用“任何”编译器编译的东西,你应该避免 gnu99 设置,并使用 c89, c99c11 - 对于 C++,请使用 c++03c++11(或 c++0x,具体取决于它在哪个特定版本的编译器上)。您越晚进行这些事情,您就越会限制“新版本的编译器”。

gnu99 表示带有“GNU 扩展”的 C99,这意味着使用此设置编译的代码可能无法在其他编译器上编译。

你当然也应该应用 -Wall,我也喜欢 -Wextra -Werror-Wall 表示启用(几乎)所有警告,-Wextra 表示启用除-Wall 之外的额外警告,-Werror 意味着您必须在获得任何代码之前修复任何警告(“将警告视为错误”)。

关于c++ - 适用于 Windows 的 MinGW 编译器,使用 GCC、C99 与 GNU99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17914701/

相关文章:

c++ - 如何正确扩展宏?

java - 通过 c、c++ 或 Java 进行 SNMP 访问

c - 如何在 OSX 上的 C 程序中处理(推测的)UTF-8 字符串

c++ - Lambda 返回 lambda 错误地推断返回类型?

compiler-construction - flex和bison二人组的替代品?

c++ - 有没有可以为 ubuntu 编译代码的在线、基于 html/flash/js 的免费 C++ 编辑器?

c++ - 单元/集成测试时间敏感的 C++ 代码

c++ - cl.exe 没有找到任何标准的包含文件

java - Unsatisfiedlinkerror OpenALPR 安卓测试项目

c - C 标准库中的任何函数是否隐式使用 `stderr` ?