簡體   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