GCCとG++:主な違いを理解する

VS CodeのC/C++ Configurationsで設定できるCompiler pathに
gccとg++ が選択できることに気づき違いを調べてみました。
間違いがあったら適宜修正していこうと思います。

GCCとは?

  • GCC(GNU Compiler Collection):
    • Cを含むさまざまなプログラミング言語をサポートする多用途のコンパイラスイート。
    • 主にCプログラムのコンパイルに使用されます。
    • C++コードもコンパイルできますが、C++ライブラリの明示的なリンクが必要です。

G++とは?

  • G++:
    • GCCスイート内のC++コンパイラです。
    • C++プログラムをコンパイルするように設計されています。
    • 必要なC++標準ライブラリを自動的にリンクし、C++開発者のコンパイルプロセスを簡素化します。
    • __cplusplusマクロを自動的に定義します。

主な違い

  1. 言語処理:
    • GCC:拡張子に基づいて入力ファイルを処理します。.cファイルをCコードとして、.cppファイルをC++コードとしてコンパイルします。ただし、リンク時にはC++標準ライブラリを自動的にリンクしません。
    • G++:デフォルトで入力ファイルをC++コードとして処理し、C++標準ライブラリを自動的にリンクします。
  2. ライブラリのリンク:
    • GCC:C++コードをコンパイルする場合、C++標準ライブラリ(libstdc++など)の手動リンクが必要です。
    • G++:C++標準ライブラリを自動的にリンクします。
  3. プリプロセッサの定義:
    • G++:コードがC++としてコンパイルされていることを示す__cplusplusマクロを事前に定義します。GCCは定義しません。

実践的な意味合い

  • Cプログラムの場合、GCCが標準的な選択肢です。
  • C++プログラムの場合、G++はライブラリのリンクを自動的に処理することでコンパイルプロセスを簡素化します。
  • GCCはC++コードをコンパイルできますが、C++プロジェクトでの使いやすさから、一般にG++が推奨されます。

  • Cプログラム(myprogram.c)をコンパイルするには:gcc myprogram.c -o myprogram
  • C++プログラム(myprogram.cpp)をコンパイルするには:g++ myprogram.cpp -o myprogram

まとめ

GCCは汎用コンパイラであり、G++はC++用に調整されています。これらの違いを理解することで、プログラミングのニーズに合った適切なツールを確実に使用できます。

2025-02-21 23:00:00 +0900 - Written by jurin-n