我正在使用适用于 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
, c99
或c11
- 对于 C++,请使用 c++03
或 c++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/