题
我上次大量使用 C++ 是几年前的事了,而且是严格在 Windows 平台上完成的。具体来说,我使用 Microsoft Visual Studio 作为我的 IDE,并开发了一些习惯模式来使用 Microsoft 的 C++ 版本。例如,我用过 无效主() 而不是标准 int main().
现在,我正在上一门课程,要求开发符合 ANSI C++ 的程序,并且代码将使用 g++ 进行编译。我很快了解到 系统(“暂停”) 在 g++ 中不起作用,可能是 Microsoft 的事情。
有谁知道有什么好的资源(网站、教程、书籍),我可以在其中学习更多更好的 ANSI C++ 投诉吗?
谢谢。
解决方案
我强烈推荐这两个:
- comp.lang.c++ Usenet 新闻组。如果您能找到一个好的 Usenet 服务提供商,并使用新闻阅读器,您应该能够摆脱垃圾邮件。我用 永恒九月.org, ,并且非常喜欢。
- 阅读 C++ 常见问题解答. 。它有很多重要的信息。
当然,如果您想要 C++ 的教程介绍,那么它们都不是很好,但看起来您已经了解了一些 C++,并且需要学习更多内容并纠正坏习惯。根据我个人的经验,上述两个方法对于做到这一点非常有用。
关于 comp.lang.c++
, ,请确保您完全阅读了他们的常见问题解答,并在发布之前在那里潜伏了一段时间。当然,这同样适用于 stackoverflow,尽管这里可能不需要潜伏。
使用 g++
, ,编译你的程序 g++ -ansi -pedantic -Wall -Wextra -Weffc++
, ,并确保您理解所有警告。我用:
g++ -Wextra -Wall -Weffc++ -ansi -pedantic -Woverloaded-virtual \
-Wcast-align -Wpointer-arith
其他提示
如果使用的是克++,然后与-pedantic和-std = C ++ 98个标志编译。对于ANSI C ++的唯一标准是真正的ISO标准的文件,这是不能被推荐给初学者。你错了有关系统(“暂停”),顺便 - 系统()是ANSI C ++部分 - 它的参数不规范,但是
。当你的代码是GCC会做,告诉你一个好工作不ISO C ++标准(并不在于它是一个ISO标准,而不是ANSI标准)。设置警告选项-Wall -Werror,并简单地修复所有警告;你很快就会出来的不符合标准的习惯和蒙古包越来越少的警告。
有很多好的教程的gcc,有一个标志,将确保代码是ANSI C标准也gcc -ansi -Wall -fsyntax-only -pedantic
* Wall - turn on all errors
* ansi - use strict ANSI C specification
* fsyntax-only - only checks syntax
* pedantic - reject violations
每评论此外,还可以使用 * -Wextra开启一些额外的警告,
更新感谢上的大写字母。更新和的-pedantic提
的GCC风扇很多。
与编译的Visual Studio下是尽可能严格的重要标志是:
cl /Za /W4 ...rest of command...
/杂禁用微软特定的扩展和/ W4是最高报警水平(除了/墙,其抱怨荒谬的东西)。
我也建议你使用Visual Studio的现代版本 - 旧版本(VC6)是可笑的不符合标准的,和微软正式假装他们从来没有在这一点上存在
。我会推荐。
网站:
图书:
- 有效的C++
- 有效的STL
- 现代C++设计
- 模板元编程
与专家交谈/倾听,了解他们的意见和原因。
C ++入门(第四版)似乎是最好的入门书,这些天,因为它需要一个现代的方法,并教所有语言的重要组成部分。加速C ++往往是由专业人士推荐的另一本书,它可以作为一个很好的介绍,但我不建议买它了,因为C ++入门很好地取代了它,并涵盖了语言更好。
请注意:C ++的Primer Plus(这是一个相当不错的书)无关,与C ++入门
。Stroustrup的C ++编程语言总是需要被提及,当然,因为它是由语言的父亲写的。很多人觉得有启发,但我个人不会推荐它为学习语言。
所有的书我提到仅描述与没有非标准扩展ISO标准。这些书籍中的方案应当与任何C ++编译器的工作。
我喜欢来访www.cplusplus.com每当我有个疑问,特别关于标准C ++库。