繁体   English   中英

编写ANSI C ++代码的资源

[英]Resources to Write ANSI C++ Code

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

现在,我上一堂课,要求开发符合ANSI C ++的程序,并且代码将使用g ++进行编译。 我很快了解到该系统(“ PAUSE”)在g ++中不起作用,可能是微软的事情。

有谁知道任何好的资源(网站,教程,书籍),在这里我可以学到更多更好的ANSI C ++投诉?

谢谢。

如果使用的是g ++,请使用-pedantic和-std = c ++ 98标志进行编译。 ANSI C ++的唯一标准实际上是ISO标准文档,因此不建议初学者使用。 顺便提一下,您对system(“ PAUSE”)感到误解-system()是ANSI C ++的一部分-但是其参数未标准化。

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

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

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

很多gcc粉丝。

在Visual Studio下要严格编译的重要标志是:

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

/ Za禁用Microsoft特定的扩展名,并且/ W4是最高警告级别(/ Wall除外,它抱怨可笑的事情)。

我还建议您使用Visual Studio的现代版本-旧版本(VC6)非常不符合规范,Microsoft正式假装它们在此刻不存在。

我强烈推荐这两个:

当然,如果您想要C ++的教程介绍,它们都不是非常棒,但是看起来您已经知道一些C ++,并且需要学习更多和纠正不良习惯。 从我的个人经验来看,以上两项对于完成此任务非常有用。

关于comp.lang.c++ ,请确保您完全阅读了他们的FAQ并潜伏了一段时间再发布。 当然,这同样适用于stackoverflow,尽管潜伏在这里不是必需的。

使用g++ ,用g++ -ansi -pedantic -Wall -Wextra -Weffc++编译程序,并确保您了解所有警告。 我用:

g++ -Wextra -Wall -Weffc++ -ansi -pedantic -Woverloaded-virtual \
-Wcast-align -Wpointer-arith

我会推荐。

网站:

图书:

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

交谈/倾听专家的声音,并理解他们必须说的话以及原因。

C ++ Primer(第四版)是当今最好的初学者书籍,因为它采用了现代化的方法并教授了语言的所有重要部分。 加速C ++是专业人士经常推荐的另一本书,它是不错的入门书,但是我不建议再购买它,因为C ++ Primer很好地替代了它,并且涵盖了更好的语言。

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

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

我提到的所有书籍仅描述了ISO标准,没有非标准扩展名。 这些书中的程序应可与任何C ++编译器一起使用。

每当有疑问时,尤其是对标准C ++库,我都喜欢访问www.cplusplus.com。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM