学习C ++时,我是否应该始终使用带有g ++的-Wall和-pedantic开关?

时间:2010-11-29 06:41:30

标签: g++

作为一个--novice,我想知道在学习C ++时总是使用这些标志(用g ++)是有益的吗?

谢谢

2 个答案:

答案 0 :(得分:2)

只要您了解其他人编写的代码示例可能会导致-Wall发出警告,那么是的,这是一个很好用的标志,因为它让您习惯于编写没有任何代码的代码编译器可能识别的潜在灰色区域。

另一方面,

-pedantic是一个棘手的案例。以下是GCC 4.4.4手册页中有关它的内容:

  

发出严格的ISO C和ISO C ++要求的所有警告;拒绝使用禁止扩展的所有程序,以及其他不使用禁止扩展的程序   遵循ISO C和ISO C ++。对于ISO C,遵循由任何使用的-std选项指定的ISO C标准版本。

     

有效的ISO C和ISO C ++程序应该使用或不使用此选项进行正确编译(尽管少数几个需要-ansi或-std选项指定   所需的ISO C版本)。但是,如果没有此选项,则还支持某些GNU扩展和传统的C和C ++功能。同   这个选项,他们被拒绝了。

     

-pedantic不会导致警告消息使用名称以__开头和结尾的备用关键字。警察警告也被禁用   “__扩展名__”后面的表达式。但是,只有系统头文件才能使用这些转义路由;应用程序应该避免   它们。

     

有些用户尝试使用-pedantic检查程序是否符合严格的ISO C标准。他们很快就发现它没有做到他们想要的东西:它找到了   一些非ISO实践,但不是全部 - 只有那些ISO C需要诊断的实践,以及其他一些已经添加了诊断的实践。

     

报告任何不符合ISO C的功能在某些情况下可能会有用,但需要大量额外的工作,并且会   与-pedantic完全不同。我们没有计划在不久的将来支持这样的功能。

答案 1 :(得分:1)

不完全是答案,但是-Weffc++标志会对违反 Effective C ++ (Scott Meyer的书)中的指南的构造发出警告。

虽然这些指导方针很好,但也可能过于严格。 STL标题会发出警告。