我应该用什么标志来强制执行一个好的C++ 11风格?

Tom*_*ize 8 c++ coding-style compiler-flags c++11

我正在学习C++,并试图编写好的代码.我目前正在使用lof的编译器标志,例如

-Wextra -Wall -pedantic -Werror -Wfatal-errors -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wfloat-equal -Wshadow -Wpointer-arith -Weffc++ -ansi -Wstrict-aliasing

我刚刚学会了关键字new,delete不应再在C++ 11中使用了.但是,我使用它时没有任何警告.

是否有一些标志用于确保良好的C++ 11风格?

o11*_*11c 5

首先,你必须意识到你的编译器永远不会完全执行好的风格.

但是,您可以使用两种技术来帮助您强制执行自己的样式:警告(可以在命令行或在pragma中传递)和poison pragma.

但是,很难管理每个编译器版本可用的确切警告集,因此我列出了警告列表.请注意,对clang的支持是最小的,它的警告通常不如gcc的实际,尽管他们的营销很棒; 另外,不可能检测到你使用哪个版本的clang来解决bug(特征检测宏相当没用).

我还列了一份毒药清单.

另外,我有一些makefile魔法,可以确保将上述两种技术应用于每个适用的文件以及进行其他一些检查.

但应注意,每个应用程序都有不同的需求,因此不应按原样使用这些标头.例如,很少有应用程序std::string像我一样想要毒药.