2010-11-29 34 views
3

作为一个新手,我想知道在学习C++时总是使用这些标志(使用g ++)是否有益?我应该在学习C++的时候总是使用-gall和-pedantic开关?

感谢

+1

“我应该永远......”倾向于是个人观点火焰焰火的邀请......倾向于同意的人倾向于表达他们的支持,而倾向于不同观点的人倾向于提出反对意见。 – 2010-11-29 10:49:49

+2

要添加: 乍一看,“学习无警告代码”听起来像是一个好主意,也是一个很好的前进方向。另一方面,只要自己编写的代码样本不会发挥作用,无论您是从教科书中尝试的东西还是尝试在其他地方找到的开放源代码,实用主义都会立即启动。该代码不可能在特定的编译器中完全无警告。 – 2010-11-29 11:02:44

回答

2

只要你理解他人编写的代码样本可能会导致警告与-Wall,那么,它的使用,因为它可以让你在编写代码的习惯,这是免费的一个很好的标志编译器可能识别的任何潜在灰色区域。

-pedantic另一方面,是一个棘手的情况。以下是GCC 4.4.4联机手册的说明:

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

有效的ISO C和ISO C++程序应该在使用或不使用此选项的情况下正确编译(尽管极少数将需要指定ISO C所需版本的-ansi或-std选项)。但是,如果没有这个选项,也支持某些GNU扩展和传统的C和C++特性。用 这个选项,它们被拒绝。

-pedantic不会导致使用名称以__开头和结尾的替代关键字的警告消息。在 后跟“__分机号__”也禁用了迂腐警告。但是,只有系统头文件应该使用这些转义路由;应用程序应该避免 他们。

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

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

1

不完全是一个答案,但还有的-Weffc++标志发出警告,即违反C++有效(该书由斯科特·迈耶)的指导方针结构。

虽然这些准则是好的,但它们也可能过于严格,例如。 STL头文件将发出警告。

相关问题