草庐IT

c++ - GCC 打开枚举,保留缺少的警告但使用默认值

使用GCC,如果您在enum值上switch并且其中一个枚举缺少case语句,则会发出警告。当您添加default项时,将不再发出警告,这在一般情况下是有意义的。有没有办法使用default语句,如果没有覆盖所有enum值,仍然会发出警告?由于我的函数可能处理不纯的输入,我想涵盖通用情况,但仍然会收到有关缺少枚举情况的编译器警告。目前我最终在switch语句之后分配了一个默认值。 最佳答案 -Wswitch-enum,但不幸的是,只有最新版本支持此功能。(您当然可以通过在开关外使用goto并省略默认值来模拟您想要的行为,但我强烈建议

c++ - GCC 打开枚举,保留缺少的警告但使用默认值

使用GCC,如果您在enum值上switch并且其中一个枚举缺少case语句,则会发出警告。当您添加default项时,将不再发出警告,这在一般情况下是有意义的。有没有办法使用default语句,如果没有覆盖所有enum值,仍然会发出警告?由于我的函数可能处理不纯的输入,我想涵盖通用情况,但仍然会收到有关缺少枚举情况的编译器警告。目前我最终在switch语句之后分配了一个默认值。 最佳答案 -Wswitch-enum,但不幸的是,只有最新版本支持此功能。(您当然可以通过在开关外使用goto并省略默认值来模拟您想要的行为,但我强烈建议

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

我正在开发一个大型协作C++项目,该项目在各种Linux、OSX和Windows上开发和运行。我们使用GCC、VisualStudioC++和英特尔C++编译器在这些平台上进行编译。随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到奇怪的错误,这些错误是特定于特定操作系统上的特定编译器的。这方面的一个例子是隐含包含某些OS/编译器对似乎为您找到的header,意外地从派生类的基类中重载了函数。我的目标是让GCC上的编译更加严格,并在所有平台上捕获更多错误,这样我们就不会一直遇到这些问题。以下是我正在考虑尝试使用GCC的标志列表,这些标志是通过Google和GCC手册页找到的

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

我正在开发一个大型协作C++项目,该项目在各种Linux、OSX和Windows上开发和运行。我们使用GCC、VisualStudioC++和英特尔C++编译器在这些平台上进行编译。随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到奇怪的错误,这些错误是特定于特定操作系统上的特定编译器的。这方面的一个例子是隐含包含某些OS/编译器对似乎为您找到的header,意外地从派生类的基类中重载了函数。我的目标是让GCC上的编译更加严格,并在所有平台上捕获更多错误,这样我们就不会一直遇到这些问题。以下是我正在考虑尝试使用GCC的标志列表,这些标志是通过Google和GCC手册页找到的

c++ - 为什么 lambda 参数的默认参数会触发“-pedantic”GCC 警告?

我的代码中某处有这个lambda:[](boola,bool=true){return!a;}}和GCC4.6“提示”这个警告:warning:defaultargumentspecifiedforlambdaparameter[-pedantic]当您不知道为什么这是“坏的”时,这非常无用。我查阅了FDISn3290并没有在5.1.2Lambda表达式中找到关于默认参数和lambda的任何内容。更新:我提交了错误报告here.UPDATE2:好的,从现在开始我使用-pedantic-errors。-pedantic只发出警告,而不发出错误。 最佳答案

c++ - 为什么 lambda 参数的默认参数会触发“-pedantic”GCC 警告?

我的代码中某处有这个lambda:[](boola,bool=true){return!a;}}和GCC4.6“提示”这个警告:warning:defaultargumentspecifiedforlambdaparameter[-pedantic]当您不知道为什么这是“坏的”时,这非常无用。我查阅了FDISn3290并没有在5.1.2Lambda表达式中找到关于默认参数和lambda的任何内容。更新:我提交了错误报告here.UPDATE2:好的,从现在开始我使用-pedantic-errors。-pedantic只发出警告,而不发出错误。 最佳答案

c++ - 如何在 GCC 为 C++03 的 CentOS 6 上部署 C++11 程序(具有依赖项)?

只要您使用相同的C++标准[1,GCC就具有很好的ABI兼容性。].但令我震惊的是,如果GCC4.3在C++03模式下编译的共享库暴露了一个std::string,这将是一个不同的std::string比GCC4.8在C++11模式下编译的可执行文件所理解的字符串。我问的原因是我打算在CentOS6上部署一个由GCC4.8以C++11模式编译的程序,它的最大打包GCC是4.3...派对C++库或更多系统级的东西)因此大概都是C++03。但如果是这种情况,我们将永远无法在较旧的Linux发行版上部署任何C++11程序,这似乎不太可能。我是否天真地认为这里可能存在问题?如果有,我该如何解决

c++ - 如何在 GCC 为 C++03 的 CentOS 6 上部署 C++11 程序(具有依赖项)?

只要您使用相同的C++标准[1,GCC就具有很好的ABI兼容性。].但令我震惊的是,如果GCC4.3在C++03模式下编译的共享库暴露了一个std::string,这将是一个不同的std::string比GCC4.8在C++11模式下编译的可执行文件所理解的字符串。我问的原因是我打算在CentOS6上部署一个由GCC4.8以C++11模式编译的程序,它的最大打包GCC是4.3...派对C++库或更多系统级的东西)因此大概都是C++03。但如果是这种情况,我们将永远无法在较旧的Linux发行版上部署任何C++11程序,这似乎不太可能。我是否天真地认为这里可能存在问题?如果有,我该如何解决

c++ - 调试 GCC 编译时间

这个问题在这里已经有了答案:ProfilingtheC++compilationprocess(7个回答)关闭7年前。我正在C++0x中创建一个相当大的库在Linux中使用GCC4.6。我的库严重依赖模板类,导致使用该库的应用程序的编译时间很长。我想通过提供最糟糕的违规类型/方法的显式实例来开始加快速度。有没有办法让GCC报告编译各种类型/方法所花费的时间,以便我可以以原则的方式应用我的显式实例化,而不是通过直觉? 最佳答案 g++some_file.cc-ftime-report将为您粗略估计在不同编译器阶段所花费的时间。在您的情

c++ - 调试 GCC 编译时间

这个问题在这里已经有了答案:ProfilingtheC++compilationprocess(7个回答)关闭7年前。我正在C++0x中创建一个相当大的库在Linux中使用GCC4.6。我的库严重依赖模板类,导致使用该库的应用程序的编译时间很长。我想通过提供最糟糕的违规类型/方法的显式实例来开始加快速度。有没有办法让GCC报告编译各种类型/方法所花费的时间,以便我可以以原则的方式应用我的显式实例化,而不是通过直觉? 最佳答案 g++some_file.cc-ftime-report将为您粗略估计在不同编译器阶段所花费的时间。在您的情