我正在开发一个大型协作C++项目,该项目既可以在各种Linux,OS X和Windows上开发和运行.我们使用GCC,Visual Studio C++和英特尔C++编译器在这些平台上进行编译.随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到特定于特定操作系统上特定编译器的奇怪错误.这方面的一个示例是隐式包含某些OS /编译器对似乎为您找到的标头,意外地从派生类中的基类重载函数.
我的目标是使GCC上的编译更加严格,并在所有平台上捕获更多错误,以便我们不会遇到这些问题.这是我正在考虑尝试通过Google和GCC手册页找到的GCC标志列表:
-壁
-Wextra
-Winit自
-WOLD式铸造
-Woverloaded虚
-Wuninitialized
-Wmissing申述
-Winit自
-ansi
-pedantic
人们用来制作GCC的其他标志(以及不太重要的Visual Studio C++和英特尔C++编译器)遵循更严格的C++语言标准是什么?具体说明您正在讨论的编译器和版本,因为其中一些可能并未在所有编译器的所有版本中实现.
除了其他人建议的迂腐错误,IMO,在编译过程中运行lint总是好的.
有一些工具:
cpplint(免费)
gimple lint
Coverity公司
它们将节省您的大量时间.