use*_*682 1 c++ standards gcc compilation g++
我正在尝试学习 C++,以前没有使用过 C++ 或 C,而且我发现一些培训材料有时试图教我 C 编码而不是 C++。
由于我没有足够的知识来辨别这些书是否试图教我正确的 C++,我想我可以在 g++ 编译器上设置一些参数来解决这个问题。所以我的问题是:
如何在Windows中设置g++编译器,以便如果我写的不是纯C++标准,他就不会编译?
提前谢谢了
没有一个编译器是完美的(大多数编译器都没有 100% 按照法律规定实现任何特定的 C++ 标准),但是您可以将警告调高,然后使它们出错:
g++ source.cpp -Wall -Wextra -pedantic -Werror
Run Code Online (Sandbox Code Playgroud)
这将导致大多数非标准行为被彻底拒绝;然而,它也会把一些警示故事变成错误,这可能是你想要的,也可能不是你想要的。
使用您的最佳判断来决定是否要使用-Werror. 就我个人而言,我会推荐它,除非您被迫不包含编写错误的第三方库标头。
不过,如果特定警告妨碍您,您始终可以排除它们;例如通过附加-Wno-unused-variable.
请参阅工具链的文档以了解可用的警告开关。
这不会检测符合标准的 C++ 代码中的 C 习惯用法。那是不可能的。
为此,你有更好的书籍、代码审查会议和你的良心。:)