编写ANSI C ++代码的资源

时间:2010-01-16 18:01:05

标签: c++ resources c++98

上一次我大量使用C ++是在几年前,它是在Windows平台上严格完成的。具体来说,我使用Microsoft Visual Studio作为我的IDE并开发了一些习惯模式来使用Microsoft的C ++版本。例如,我使用 void main()而不是标准 int main()

现在,我正在上一个类,需要开发符合ANSI C ++的程序,代码将使用g ++编译。我很快就知道系统(“PAUSE”)在g ++中不起作用,可能是微软的事情。

有没有人知道有什么好的资源(网站,教程,书籍),我可以从中学到更好的ANSI C ++投诉?

谢谢。

9 个答案:

答案 0 :(得分:2)

如果您使用的是g ++,请使用-pedantic和-std = c ++ 98标志进行编译。 ANSI C ++的唯一标准实际上是ISO标准文档,不能推荐给初学者。顺便说一句,你错了系统(“PAUSE”) - system()是ANSI C ++的一部分 - 但它的参数不是标准化的。

答案 1 :(得分:1)

大多数C ++书籍都是平台无关的(当然除非它们是专门为Visual C ++制作的)。以下是专家对## C ++

推荐的一些good books

答案 2 :(得分:1)

有很多很好的教程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

Per,评论另外你可以使用     * -Wextra打开一些额外的警告,

更新感谢大写更新。并提及-pedantic

答案 3 :(得分:1)

GCC会很好地告诉您何时您的代码不符合ISO C ++(不是它是ISO标准,而不是ANSI标准)。设置警告选项-Werror -Wall,只需修复所有警告;你很快就会摆脱不合规的习惯,并且越来越少的警告。

答案 4 :(得分:1)

很多gcc粉丝。

在Visual Studio下编译的重要标志尽可能严格:

cl /Za /W4 ...rest of command...

/ Za禁用Microsoft特定扩展,而/ W4是最高警告级别(除了/ Wall,它抱怨荒谬的事情)。

我还建议您使用Visual Studio的现代版本 - 旧版本(VC6)非常不符合要求,并且Microsoft正式假装它们从未存在过。

答案 5 :(得分:0)

我强烈推荐这两个:

  • comp.lang.c++ Usenet新闻组。如果您能够获得一个好的Usenet服务提供商,并使用新闻阅读器,您应该能够摆脱垃圾邮件。我使用eternal-september.org,并且喜欢它。
  • 阅读C++ FAQ。它有很多很棒的信息。

当然,如果你想要一个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

答案 6 :(得分:0)

我会推荐。

网站:

书:

  • 有效的C ++
  • 有效stl
  • 现代c ++设计
  • 模板元编程
说话/倾听专家的意见,了解他们要说什么以及为什么。

答案 7 :(得分:0)

C ++ Primer(4th Ed)似乎是最好的初学者书籍,因为它采用现代方法并教授该语言的所有重要部分。 Accelerated C ++是专业人士经常推荐的另一本书,它作为一个很好的介绍,但我不建议再购买它,因为C ++ Primer很好地取代它并更好地涵盖了语言。

注意:C ++ Primer Plus(这是一本相当糟糕的书)与C ++ Primer无关。

Stroustrup的C ++编程语言当然需要提及,因为它是由语言之父编写的。很多人觉得它很有启发性,但我个人不会推荐它来学习这门语言。

我提到的所有书籍都只描述了没有非标准扩展的ISO标准。这些书中的程序应该适用于任何C ++编译器。

答案 8 :(得分:0)

每当我怀疑时,我都喜欢访问www.cplusplus.com,特别是关于标准C ++库。