1

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

现在,我正在学习一个需要开发符合 ANSI C++ 的程序的课程,并且代码将使用 g++ 编译。我很快了解到系统(“PAUSE”)在 g++ 中不起作用,可能是微软的东西。

有谁知道任何好的资源(网站、教程、书籍),我可以在其中了解更多更好的 ANSI C++ 投诉?

谢谢你。

4

9 回答 9

2

如果您使用的是 g++,则使用 -pedantic 和 -std=c++98 标志进行编译。ANSI C++ 的唯一标准实际上是 ISO 标准文档,不推荐给初学者。顺便说一下,您对 system("PAUSE") 有误解 - system() 是 ANSI C++ 的一部分 - 但是,它的参数不是标准化的。

于 2010-01-16T18:05:45.757 回答
1

大多数 C++ 书籍都与平台无关(当然,除非它们是专门为 Visual C++ 编写的)。以下是##C++ 专业人士推荐的一些好书

于 2010-01-16T18:06:40.887 回答
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

每,评论此外,您可以使用 * -Wextra 打开一些额外的警告,

更新感谢大写更新。,并提到-pedantic

于 2010-01-16T18:07:03.203 回答
1

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

于 2010-01-16T18:17:44.620 回答
1

很多gcc的粉丝。

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

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

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

我还建议您使用现代版本的 Visual Studio - 旧版本 (VC6) 非常不符合标准,微软官方假装它们在这一点上从未存在过。

于 2010-01-16T19:37:34.500 回答
0

我强烈推荐这两个:

  • comp.lang.c++ Usenet 新闻组。如果你能找到一个好的 Usenet 服务提供商,并使用新闻阅读器,你应该能够摆脱垃圾邮件。我使用永恒的september.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
于 2010-01-16T18:09:02.207 回答
0

我会推荐。

网站:

图书:

  • 有效的 C++
  • 有效的
  • 现代 C++ 设计
  • 模板元编程

与专家交谈/聆听并了解他们要说的内容和原因。

于 2010-01-16T20:27:53.650 回答
0

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

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

当然,Stroustrup 的 The C++ Programming Language 总是需要提及,因为它是由语言之父编写的。很多人觉得它很有启发性,但我个人不建议将它用于学习语言。

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

于 2010-01-16T20:39:00.473 回答
0

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

于 2010-01-17T00:21:05.753 回答