我有一个经典的问题:C ++标准应该如何(我的意思是最终版本的实际官方文件),例如: C ++ 98,C ++ 03用于学习和教授C ++。我的想法只是从普通C ++用户的角度出发,而不是从语言律师或希望加入标准委员会,编译器编写者等的角度出发。
以下是我的个人想法:
a)开始学习C ++是一个很好的地方。像“C ++ in a Nutshell”,“C ++编程语言”等书籍在这方面做得非常好,同时与标准紧密结合。
b)只有在
时才需要恢复到标准编译器提供的行为与普通书籍所说的不符,
某些行为在编译器之间不一致,例如GCC,VS,Comeau等我理解这些编译器可能不一致的事实是在很少的情况下/语言的黑暗角落,例如模板/异常处理等。但是,只有在移植和/或迁移到不同的环境或者有编译器升级时,才能真正了解可能的不同编译器行为,例如。
如果概念在手头的书中解释不充分/没有解释,例如如果它是一个非常先进的概念
关于此的任何想法/想法/建议?
答案 0 :(得分:7)
C ++语言标准对于开始学习该语言来说是一个绝对可怕的地方。它密集,钝,很长。通常情况下,您要查找的信息分布在七个不同的条款中,或隐藏在一个句子的半个句子中,与您认为应该在哪里完全无关(或者更糟糕的是a behavior is specified in the sentence you ignored because you didn't think it was relevant)。
当然,确实有它的用途。仅举几例,
如果您认为自己在编译器中发现了错误,通常需要参考该标准,以确保您不仅仅误解了指定的行为。
如果您发现编译器之间的行为不一致,那么能够查找哪个是正确的(或哪个更正确)是很方便的,尽管通常您需要编写变通方法。
如果您想知道为什么事情就是这样,那么它通常是一个很好的参考:您可以看到该语言的不同特征是如何相关的,并了解它们如何相互作用。当然,事情并不总是很清楚,但它们往往是。有许多浓缩的例子和说明,用于说明和解释规范性文本。
如果您在Stack Overflow上的帖子中引用C ++标准,则会获得更多a lot more upvotes。 : - )
了解这门语言非常有趣。编写代码并通过编译和运行来绊倒是一回事。完全是另一回事,试图理解整个语言并理解为什么你必须以某种方式做事。
答案 1 :(得分:2)
该标准应用于确保代码的可移植性。
在编写基本的c ++代码时,您不需要参考标准,但在使用模板或高级使用STL时,对标准的引用对于保持与多个编译器的兼容性以及向前兼容性至关重要版本。
答案 2 :(得分:0)
我使用g++
编译我的C ++程序,在那里我使用选项-std=c++0x
(早期,-std=c++98
)来确保我的代码始终符合标准。如果我收到有关标准合规性的任何警告或错误,我会对此进行研究以教育自己并修复我的代码。
答案 3 :(得分:0)