開発環境の構築

開発環境を整えるのはキッチンを備えるようなものです——コンロ(コンパイラ)と調理器具(エディタ)が揃って初めて、料理(コードを書くこと)を始められます。

GCCコンパイラのインストール

GCC(GNU Compiler Collection)は最も人気のある C言語コンパイラで、無料でクロスプラットフォーム対応です。C言語コードを実行ファイルにコンパイルするには、まず GCC をインストールする必要があります。

Windowsでのインストール

Windows では MinGW-w64 または MSYS2 のインストールをお勧めします。どちらも Windows 版 GCC を提供しています。

方法 1:MinGW-w64(初心者にお勧め)

  1. https://www.mingw-w64.org にアクセスしインストーラをダウンロード
  2. インストール時に x86_64 アーキテクチャと win32 スレッドモデルを選択
  3. インストール先ディレクトリの bin フォルダをシステムの PATH 環境変数に追加

方法 2:MSYS2(より柔軟)

BASH
pacman -S mingw-w64-x86_64-gcc

インストール後、コマンドプロンプトを開いて確認します:

BASH
gcc --version

バージョン番号が表示されればインストール成功です。

macOSでのインストール

macOS には GCC が含まれていませんが、Homebrew でインストールできます:

BASH
brew install gcc

macOS の組み込み cc コマンドは実際には Clang コンパイラを起動しますが、これも C言語コードをコンパイルできます。確認するには:

BASH
cc --version

Linuxでのインストール

ほとんどの Linux ディストリビューションではパッケージマネージャから直接 GCC をインストールできます:

BASH
sudo apt install gcc

インストールを確認します:

BASH
gcc --version
💡 ヒント: macOS の Clang も Linux の GCC も、標準的な C言語コードをコンパイルできます。初心者にとって実質的な差はありません。本書では gcc コマンドを使用します。

VS Codeの設定

VS Code は Microsoft が提供する無料のコードエディタです——軽量で拡張機能が豊富で、C言語コードを書くのに最適です。

VS Codeのインストール

https://code.visualstudio.com からダウンロードしてインストールします。

必須拡張機能のインストール

VS Code を開き、Ctrl+Shift+X で拡張機能マーケットプレイスを開き、次の拡張機能を検索してインストールします:

拡張機能 目的
C/C++(Microsoft) シンタックスハイライト、IntelliSense、デバッグサポート
Code Runner(Jun Han) ワンクリックでコードを実行——Ctrl+Alt+N で実行

C/C++拡張機能の設定

Ctrl+Shift+P を押し、C/C++: Edit Configurations (UI) と入力し、次の設定が正しいことを確認します:

ワンクリック実行の設定

Code Runner をインストールした後、Ctrl+Alt+N で現在の C言語ファイルを実行できます。ターミナルで手動実行したい場合は、コマンドラインから直接使うこともできます。

⚠️ 注意: VS Code でフォルダを開く際は、専用フォルダ(例:c-learn)を作成し、単一ファイルではなくフォルダ全体を開いてください。これにより拡張機能が正しく動作します。

最初のプログラム:Hello World

C
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
▶ 試してみよう
TEXT
Hello, World!

1 行ずつ解説します:

💡 ヒント: 慣例として、プログラムは正常終了時に 0 を、異常終了時に 0 以外の値を返します。オペレーティングシステムはこれでプログラムが正常に実行されたかを判断します。

コンパイルと実行の流れ

C言語はコンパイル言語です——コードをそのまま実行することはできず、まず機械語にコンパイルする必要があります。全体の流れは次のようになります:

TEXT
ソースコード (.c) → プリプロセス → コンパイル → アセンブル → リンク → 実行ファイル

手順説明

手順 1:ソースファイルを作成

VS Code で hello.c という新しいファイルを作成し、上の Hello World コードを入力して保存します。

手順 2:コンパイル

BASH
gcc -o hello hello.c

手順 3:実行

BASH
./hello

Windows の場合:

BASH
hello.exe

段階ごとのコンパイル

コンパイルの各段階を理解したい場合は、それぞれ個別に実行できます:

BASH
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
段階 フラグ 出力 説明
プリプロセス -E .i ファイル マクロを展開、#include を処理、コメントを削除
コンパイル -S .s ファイル プリプロセス済みコードをアセンブリに翻訳
アセンブル -c .o ファイル アセンブリを機械語に翻訳(オブジェクトファイル)
リンク 特別なフラグなし 実行ファイル オブジェクトファイルとライブラリを結合して最終プログラムを生成
🔥 よくある間違い: 日常的な開発では gcc -o hello hello.c で十分です。段階ごとのコンパイルは主に過程を理解したり問題を調査したりする際に役立ちます。

よく使うコンパイラフラグ

フラグ 目的
-o 出力ファイル名を指定 gcc -o prog main.c
-Wall 一般的な警告をすべて有効化 gcc -Wall -o prog main.c
-Wextra 追加の警告を有効化 gcc -Wextra -o prog main.c
-std=c99 C 規格を指定 gcc -std=c99 -o prog main.c
-g デバッグ情報を生成 gcc -g -o prog main.c
-O2 最適化レベル 2 gcc -O2 -o prog main.c
💡 ヒント: 常に gcc -Wall -Wextra -std=c99 -o prog main.c でコンパイルしましょう。警告は味方です——多くの潜在的なバグを見つけるのに役立ちます。

よくあるコンパイルエラー

初心者のうちはコンパイルエラーに遭遇します。パニックにならないでください——エラーメッセージを読む力を身につけることが、エラーを避けることよりも重要です。

セミコロンの忘れ

C
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n")
    return 0;
}
TEXT
hello.c:4:33: error: expected ';' before 'return'

エラーメッセージは ファイル名:行:列:エラーの説明 という形式です。ここでは 4 行目の末尾にセミコロンが欠けています。

未宣言の識別子

C
#include <stdio.h>

int main(void) {
    print("Hello, World!\n");
    return 0;
}
TEXT
hello.c:4:5: warning: implicit declaration of function 'print'

printf と書くべきところを print とタイプミスしました——コンパイラがこの関数を認識できません。スペルを確認しましょう。

ヘッダファイルの忘れ

C
int main(void) {
    printf("Hello, World!\n");
    return 0;
}
TEXT
hello.c:2:5: warning: implicit declaration of function 'printf'

#include <stdio.h> を忘れたため、コンパイラが printf の宣言を知りません。

括弧の不一致

C
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
TEXT
hello.c:5:1: error: expected declaration or statement at end of input

このコード自体は正しいですが、書いている途中で } をうっかり省略するとこの種のエラーが出ます。コンパイラは「ファイルの末尾に何かが足りない」と告げています——通常は閉じていない括弧です。

⚠️ 注意: エラーの行番号は、実際の問題の次の行を指すことがあります。5 行目がエラーを報告したら、まず 4 行目を確認してください。コンパイラは先へ進めなくなった地点で初めて問題を検出しますが、根本原因は前の行にあることが多いです。

プロジェクトのファイル構成

プログラムが複雑になるにつれ、次のようにファイルを整理するのが良い習慣です:

TEXT
c-learn/
├── ch02/
│   └── hello.c
├── ch03/
│   └── syntax.c
└── ch04/
    └── variables.c

章ごとにフォルダを分け、ファイル名は小文字の英語で、内容が分かりやすい名前にします。

❓ よくある質問

Q GCCをインストールしたのに、コマンドラインで「gcc is not recognized as a command」と出ます。どうすればいいですか?
A GCC の bin ディレクトリがシステムの PATH に含まれていないのが原因です。Windows の場合:「PC」を右クリック → プロパティ → システムの詳細設定 → 環境変数 → Path を編集 → GCC の bin ディレクトリのパス(例:C:\mingw64\bin)を追加し、コマンドプロンプトを再起動してください。
Q VS Code と Dev-C++/Code::Blocks はどちらを選ぶべきですか?
A VS Code をお勧めします。よりモダンで、拡張機能のエコシステムが豊富で、C言語サポートが優れています。Dev-C++ は長年更新されておらず、Code::Blocks はインターフェースが古くデバッグ機能が弱いです。VS Code は学習曲線がやや急ですが、長期的には絶対に価値があります。
Q コンパイルの警告とエラーの違いは何ですか?
A エラーはコンパイルを妨げ、実行ファイルは生成されません。警告はコンパイルを止めませんが、潜在的な問題を知らせます。警告はエラーとして扱いましょう:-Wall -Wextra でコンパイルし、すべての警告を解消してください。
Q macOS で gcc コマンドが実際には Clang を起動します。問題ありますか?
A 初心者には全く問題ありません。Clang は GCC の一般的なオプションと標準 C言語構文に完全対応しています。違いが生じるのは GCC 固有の拡張機能のみで、標準的な C言語コードは両者で同じ動作をします。

📖 まとめ

📝 練習問題

  1. 自分のパソコンに GCC をインストールし、gcc --version で確認してバージョン番号を記録してください
  2. 自分の名前と挨拶を出力するプログラム(例:「こんにちは、私は太郎です!C言語を学んでいます!」)を書き、コンパイルして実行してください
  3. 意図的に 3 つのコンパイルエラー(セミコロン忘れ、関数名のタイプミス、ヘッダファイル忘れ)を作り、コンパイラのエラーメッセージを記録して、エラー出力を読む練習をしてください
100%