c++ - 使 GCC 和其他 C++ 编译器非常严格

标签 c++ cross-platform compilation compiler-warnings

我正在开发一个大型协作 C++ 项目,该项目在各种 Linux、OS X 和 Windows 上开发和运行。我们使用 GCC、Visual Studio C++ 和英特尔 C++ 编译器在这些平台上进行编译。随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到奇怪的错误,这些错误是特定于特定操作系统上的特定编译器的。这方面的一个例子是隐含包含某些 OS/编译器对似乎为您找到的 header ,意外地从派生类的基类中重载了函数。

我的目标是让 GCC 上的编译更加严格,并在所有平台上捕获更多错误,这样我们就不会一直遇到这些问题。以下是我正在考虑尝试使用 GCC 的标志列表,这些标志是通过 Google 和 GCC 手册页找到的:

人们用来使 GCC(以及不太重要的 Visual Studio C++ 和英特尔 C++ 编译器)遵循更严格的 C++ 语言标准的其他标志是什么?请具体说明您正在谈论的编译器和版本,因为其中一些可能不会在所有编译器的所有版本中都实现。

最佳答案

除了其他人建议的迂腐错误之外,IMO,在编译过程中运行 lint 总是好的。

那里有一些工具:

它们会为您节省大量时间。

关于c++ - 使 GCC 和其他 C++ 编译器非常严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490737/

相关文章:

c++ - 在 Linux (Ubuntu 16.04) C++ 上从非终止程序连续获取数据

delphi - 跨平台商业开发工具/IDE/编程语言(原生)

c# - 为 .NET 和单声道编写 C# 应用程序的指南

bash - 从 Bash 确定 Vimfiles 目录

javascript - 为什么 JavaScript 会被编译成机器码?

c++ - 如何创建 const boost::iterator_range

c++ - 即使构建成功,Eclipse c++ Type could not be resolved 错误

c++ - OpenCV 3.2.0 无法访问 xfeatures2d 中的 SURF/SIFT

Java 编译错误 : class Appletprac is public, 应在名为 Appletprac.java 的文件中声明

c++ - QuantLib-vc110-mt.lib中的 "mt"是什么意思?