c++ - 如何让 g++ 强制我遵守 C++ 标准

标签 c++ gcc compilation g++ standards

我正在尝试学习 C++,但以前没有使用它或 C 的经验,我看到一些培训 Material 有时试图教我 C 编码而不是 C++。

由于我没有足够的知识来辨别这些书是否试图教我正确的 C++,我想我可以在 g++ 编译器上设置一些参数来解决这个问题。 所以我的问题是:

如果我写的不是纯C++标准的,怎么设置windows的g++编译器不编译?

提前致谢

最佳答案

没有一个编译器是完美的(大多数都没有 100% 按照法律条文实现任何特定的 C++ 标准),但是您可以将警告调高,然后让它们出错:

g++ source.cpp -Wall -Wextra -pedantic -Werror

这将导致大多数非标准行为被彻底拒绝;但是,它也会将一些警示故事变成错误,这可能是您想要的,也可能不是您想要的。

根据您的最佳判断来决定是否要使用-Werror。就我个人而言,我会推荐它,除非您被迫不被要求包含编写错误的第三方库 header 。

不过,如果它们妨碍您,您始终可以排除特定的警告;例如通过附加 -Wno-unused-variable

请查阅您的工具链文档以了解可用的警告开关。

不会做的是检测符合标准的 C++ 代码中的 C 习语。那是不可能的。
为此,你有更好的书籍、代码审查 session 和你的良心。 :)

关于c++ - 如何让 g++ 强制我遵守 C++ 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830848/

相关文章:

c++ - LNK2038 : mismatch detected for 'RuntimeLibrary' with cuda

c++ - 虚继承和基类的基类

c - 如何通过优化标志追踪代码行为不同的原因

c - uint 和 unsigned int 之间的区别?

java - addMouseListener 出错

java - 为什么这段代码可以编译但运行时崩溃?

C++,要返回各种类实例如何创建模板?

c++ - 如何使用 dlopen() 和 dlsym() 调用 .so 文件中的函数?

c++ - Libcurl C++ "undefined reference to"(Windows/MinGW/g++)

c# - C++ 到 C# : Pointers & Arrays