上一次我大量使用C ++是在几年前,它是在Windows平台上严格完成的。具体来说,我使用Microsoft Visual Studio作为我的IDE并开发了一些习惯模式来使用Microsoft的C ++版本。例如,我使用 void main()而不是标准 int main()。
现在,我正在上一个类,需要开发符合ANSI C ++的程序,代码将使用g ++编译。我很快就知道系统(“PAUSE”)在g ++中不起作用,可能是微软的事情。
有没有人知道有什么好的资源(网站,教程,书籍),我可以从中学到更好的ANSI C ++投诉?
谢谢。
答案 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)
我强烈推荐这两个:
当然,如果你想要一个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)
我会推荐。
网站:
书:
答案 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 ++库。