我正在开发一个大型协作 C++ 项目,该项目在各种 Linux、OS X 和 Windows 上开发和运行。我们使用 GCC、Visual Studio C++ 和英特尔 C++ 编译器在这些平台上进行编译。随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到奇怪的错误,这些错误是特定于特定操作系统上的特定编译器的。这方面的一个例子是隐含包含某些 OS/编译器对似乎为您找到的标头,意外地从派生类的基类中重载了函数。
我的目标是让 GCC 上的编译更加严格,并在所有平台上捕获更多错误,这样我们就不会一直遇到这些问题。这是我正在考虑尝试通过 Google 和 GCC 手册页找到的 GCC 的标志列表:
- -墙
- -Wextra
- -Winit-self
- -Wold-style-cast
- -Woverloaded-虚拟
- -未初始化
- -Wmissing-declarations
- -Winit-self
- -ansi
- -迂腐的
人们用来使 GCC(以及不太重要的 Visual Studio C++ 和英特尔 C++ 编译器)遵循更严格的 C++ 语言标准的其他标志是什么?请具体说明您正在谈论的编译器和版本,因为其中一些可能不会在所有编译器的所有版本中实现。