C/C++

Last-modified: 2017-01-31 (火) 14:46:47

概要

「C/C++」と表記されることが多く、プログラマーの中にも「CとC++は同じもの」あるいは「Cってなに?」な人、「C++はCの新しいバージョン」くらいの認識の人もいます。
ですが、実際には、C言語とC++言語は別の言語です。
まず、C言語とはいっても、2014年現在でも、様々なバージョンのC言語が存在します。
C++言語は、C言語と同じ仕様を多く含むため、そのコンパイラーもC/C++を、ほとんど同じものとして扱い、入力ファイル拡張子の違いくらいで、区別して扱っています。
さて、そんなこんなの、C/C++の深遠、見てみましょう。

C言語

大きく4種類のバージョンが存在しています。
1つが、「K&R」と呼ばれるバージョン。次が、1989/1990年に標準化された「C89」「C90」と呼ばれるバージョン(中身は同じなので、以降、「C90」と表記)。そして1999年に標準化された「C99」。そして2011年に標準化された「C11」があります。
それぞれのバージョンで、徐々に仕様が追加されたり、C++言語の仕様を取り込んだり、逆に削除された仕様も存在します。
また、一番最初の規格「K&R」は、国際的な仕様書があったわけではなく、書籍として発売されたものでした。このことから、少し曖昧な部分があったりしたため、K&Rを独自解釈し、コンパイラーを開発したメーカーが多かったため、K&Rには色んな「仕様」が存在します。
また、C99、C11に対応しているコンパイラーでも、すべての仕様を実装しているわけではありません。
ですが、それでも同じ構文で書くことで、同じ動作をすることが保証されていることが、どれだけ重要で、ソフトウェアの進歩に寄与したか、計ることなんてできません。
ちゃんと、言語仕様を知ることで、最大限にコスパのいい開発しましょう。

  1. 標準ライブラリ
  2. プリプロセッサ ディレクティブ
  3. チップス

C++言語

最も最初のバージョンは、「C with Classes」と呼ばれていました。「C++」と呼ばれるようになったのは、1983年です。当初は、国際標準規格ではなく1985年出版の「The C++ Programming Language」がその仕様書でした。その後、1989年にバージョン2.0が公表され、1990年出版の「The Annotated C++ Reference Manual」(通称:ARM)が仕様書として使われていました。その後、1998年にようやく国際標準化され、ISO/IEC 14882:1998(通称:C++98)となりました。ただ、この時点では、まだ国際標準の意味を各社コンパイラメーカーも理解していなかったのか、コンパイラごとの方言、不具合といってもいい出力結果、独自解釈など様々な問題をはらんでいました。
その後、ISO/IEC 14882:2003(通称:C++03)、ISO/IEC 14882:2011(通称:C++11)として規格を膨らませながら、コンパイラも国際標準に沿うようになっていきました。また、徐々にではありますが、古き悪しき(バグを生みやすい)構文も排除されつつあります。

  1. テンプレート
  2. 標準ライブラリ
  3. チップス
  4. エラー処理-->チップス
  5. パフォーマンス
    1. パフォーマンス(雑)
    2. 実行速度的パフォーマンスアップ術
    3. メモリ削減術
    4. 工数削減術
  1. 要望
  2. C++0x
  3. イントリンシック命令

Boost Library

OpenCV Library

開発環境

統合環境

  1. Microsoft Visual Studio
  2. Eclipse
  3. NetBeans
  4. High-performance Embedded Workshop
  5. Wide Studio
  6. Xcode

ビルド

  1. make
  2. SCons
  3. Autotools
  4. waf
    1. http://code.google.com/p/waf/
    2. http://d.hatena.ne.jp/tanakh/20100212
  5. CMake
  6. Ant

デバッガ

  1. gdb

解析

  1. Valgrind

コンパイラ

  1. ARM CC
  2. Borland C++ Compiler
  3. C++ Builder
  4. CINT
  5. clang
  6. Comeau C++
  7. Compaq C
  8. Cygwin
  9. DIGITAL C++
  10. Digital Mars C++
  11. Emx GNU C
  12. GNU C
  13. Intel C++ Compiler
  14. Microsoft Quick C
  15. Mix Power C
  16. Objective-C
  17. OpenC++ Compiler
  18. Renesas CC-RL Compiler
  19. Symantec C++
  20. TurboC
  21. Watcom C/C++
  22. Wind River Compiler
  23. Zortech C/C++

その他

  1. C言語標準ライブラリ
  2. 定義済みマクロ
  3. コメントスタイル
  4. vs メモリリーク
  5. スレッドモデル
  6. プログラムのビルド時間短縮
  7. http://www.textdrop.net/google-styleguide-ja/cppguide.xml
    http://www.open-std.org/
    http://www.generic-programming.org/software/ConceptGCC/