コンテンツにスキップ

C言語プログラミング環境構築ガイド

ディレクトリ構造の作成

ディレクトリ名は「lesson」と「lecture」のどちらでも問題ないが、授業の資料では「lecture」が使用されているため、統一性を保つために「lecture」を推奨する。

# ホームディレクトリに移動
cd ~

# 授業用のディレクトリを作成
mkdir -p prog1/lecture{01..14}

Emacsを使用したファイル編集

Emacsでのファイル作成と編集の詳細手順

# 作成したディレクトリに移動
cd ~/prog1/lecture01

# Emacsでファイルを開く
emacs hello.c

Emacsでの詳細な操作手順:

  1. Emacsが起動し、新しいバッファが表示される
  2. 以下のコードを入力する:
/* 挨拶と自己紹介 */
#include <stdio.h>

int main(void)
{
    printf("こんにちは。私の名前は福岡太郎です。\n");
    return 0;
}
  1. ファイルを保存するには:
  2. Ctrl + x を押した後、Ctrl + s を押す
  3. 画面下部に「Write file: ~/prog1/lecture01/hello.c」と表示されることを確認する
  4. Enter キーを押して保存する

  5. Emacsを終了するには:

  6. Ctrl + x を押した後、Ctrl + c を押す
  7. 変更を保存していない場合は確認メッセージが表示されるので、y を押して保存する

Emacsのショートカットキー(参考)

キー組み合わせ 機能
Ctrl + x, Ctrl + s ファイルを保存する
Ctrl + x, Ctrl + c Emacsを終了する
Ctrl + g 操作をキャンセルする
Ctrl + a 行の先頭に移動する
Ctrl + e 行の末尾に移動する
Ctrl + k カーソル位置から行末までを削除する
Ctrl + y 削除したテキストを貼り付ける
Ctrl + s 前方検索を開始する
Ctrl + r 後方検索を開始する
Meta(Alt) + x コマンドを入力する

Visual Studio Code (VSCode)を使用したファイル編集

VSCodeでのファイル作成と編集の詳細手順

# 作成したディレクトリに移動
cd ~/prog1/lecture01

# VSCodeでフォルダを開く
code .

VSCodeでの詳細な操作手順:

  1. VSCodeが起動する。左側のエクスプローラーパネルが表示される
  2. エクスプローラーパネルで右クリックし、「新しいファイル」を選択する
  3. ファイル名として「hello.c」と入力し、Enterキーを押す
  4. エディタ領域に以下のコードを入力する:
/* 挨拶と自己紹介 */
#include <stdio.h>

int main(void)
{
    printf("こんにちは。私の名前は福岡太郎です。\n");
    return 0;
}
  1. ファイルを保存するには:
  2. Ctrl + S を押す
  3. または、「ファイル」メニューから「保存」を選択する

  4. ファイルを閉じるには:

  5. ファイルタブの「×」ボタンをクリックする
  6. または、Ctrl + W を押す

  7. VSCodeを終了するには:

  8. 右上の「×」ボタンをクリックする
  9. または、「ファイル」メニューから「終了」を選択する

VSCodeの便利な機能

  • シンタックスハイライト:コードの要素が自動的に色分けされて見やすくなる
  • インテリセンス:コード補完機能により、関数や変数名を自動的に提案する
  • エラー表示:コードにエラーがある場合、リアルタイムで赤い波線が表示される
  • ミニマップ:右側にコードの全体像を表示し、ナビゲーションを容易にする

ターミナルでのコンパイルと実行

基本的なコンパイルと実行手順

# 作成したディレクトリに移動
cd ~/prog1/lecture01

# GCCを使用してコンパイル
gcc hello.c -o hello

# 実行ファイルを実行
./hello

詳細なオプションを使用したコンパイル

# 警告を表示し、デバッグ情報を含めるオプションを追加
gcc -Wall -Wextra -g hello.c -o hello

# 実行
./hello

コンパイルオプションの説明: - -Wall:一般的な警告をすべて表示する - -Wextra:追加の警告も表示する - -g:デバッグ情報を含める(デバッガで使用可能) - -o hello:出力ファイル名を「hello」に指定する

コンパイルエラーの確認と修正

コンパイル時にエラーが発生した場合:

# 例:エラーがある場合
gcc hello.c -o hello
# エラーメッセージが表示される

# エディタでファイルを開き直して修正
emacs hello.c  # または code hello.c

Emacsを使用したコンパイルと実行

Emacsでのコンパイル手順

  1. Emacsでファイルを開いている状態で:
  2. Meta(Alt) + x を押す
  3. compile と入力して Enter キーを押す
  4. コンパイルコマンドの入力を求められるので、gcc -Wall hello.c -o hello と入力する
  5. Enter キーを押してコンパイルを実行する

  6. コンパイル結果は別のバッファに表示される:

  7. エラーがある場合は、エラー箇所に移動するために Ctrl + x を押してから ` (バッククォート)を押す
  8. 成功した場合は、コンパイルバッファに「Compilation finished」と表示される

Emacsでのプログラム実行手順

  1. シェルを開く:
  2. Meta(Alt) + x を押す
  3. shell と入力して Enter キーを押す

  4. シェルバッファで実行:

  5. ./hello と入力して Enter キーを押す
  6. プログラムの出力がシェルバッファに表示される

Emacsのコンパイル・実行のカスタマイズ(.emacsファイルの設定)

自動化するために、ホームディレクトリの.emacsファイルに以下の設定を追加できる:

;; C言語コンパイル用のキーバインディング
(global-set-key [f9] 'compile)
(setq compile-command "gcc -Wall -g ")

;; コンパイル・実行を連続して行う関数
(defun compile-and-run ()
  (interactive)
  (let ((src (file-name-nondirectory buffer-file-name))
        (exe (file-name-sans-extension (file-name-nondirectory buffer-file-name))))
    (compile (concat "gcc -Wall -g " src " -o " exe " && ./" exe))))

;; F5キーにコンパイル・実行の関数をバインド
(global-set-key [f5] 'compile-and-run)

この設定により: - F9キーを押すとコンパイルコマンドが実行される - F5キーを押すとコンパイルと実行が連続して行われる

VSCodeを使用したコンパイルと実行

VSCodeでのコンパイル手順

  1. ターミナルを開く:
  2. 上部メニューから「ターミナル」→「新しいターミナル」を選択する
  3. または、Ctrl + ` を押す

  4. ターミナルでコンパイルコマンドを実行:

    gcc -Wall hello.c -o hello
    

  5. 実行コマンドを入力:

    ./hello
    

VSCodeのタスク機能を使った自動化

VSCodeでは、タスクを設定することでコンパイルと実行を自動化できる:

  1. 「Ctrl + Shift + P」を押してコマンドパレットを開く
  2. 「Tasks: Configure Default Build Task」と入力して選択する
  3. 「Create tasks.json file from template」を選択する
  4. 「Others」を選択する
  5. 表示されるtasks.jsonファイルを以下のように編集する:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "C: gcc build active file",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-Wall",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        },
        {
            "label": "C: run active file",
            "type": "shell",
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "dependsOn": ["C: gcc build active file"]
        }
    ]
}
  1. ファイルを保存する(Ctrl + S)

これにより: - 「Ctrl + Shift + B」でビルド(コンパイル)タスクが実行される - 「Ctrl + Shift + P」→「Tasks: Run Test Task」で実行タスクが実行される(ビルド後自動的に実行)

VSCodeのデバッグ設定

デバッグ機能を使用するための設定:

  1. 「Ctrl + Shift + P」を押してコマンドパレットを開く
  2. 「Debug: Add Configuration」と入力して選択する
  3. 「C/C++: (gdb) Launch」を選択する
  4. 表示されるlaunch.jsonファイルは以下のようになっている:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C: Debug (GDB)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C: gcc build active file"
        }
    ]
}
  1. ファイルを保存する(Ctrl + S)

デバッグの使用方法: - ブレークポイントを設定するには、行番号の左側をクリックする - F5キーを押してデバッグを開始する - F10キーで次の行へ(ステップオーバー) - F11キーでステップイン - F5キーで続行 - Shift + F5キーでデバッグを終了する

課題に取り組む際の推奨ワークフロー

  1. 授業資料を確認し、課題の要件を理解する
  2. 適切なディレクトリ(例:~/prog1/lecture01/)に移動する
  3. 課題に応じたファイル名でソースファイルを作成する(例:list0101.c
  4. コードを記述する
  5. コンパイルと実行を繰り返し、デバッグする
  6. 正常に動作することを確認する
  7. オンラインジャッジシステムに提出する

注意点

  1. ファイル名は課題の指示に従って命名する(例:list0101.c
  2. 提出前に不要なコメントやデバッグ用のprintfを削除する
  3. プログラムが正しく動作することを確認する
  4. コードには適切なコメントを入れる
  5. 教科書の例題だけでなく、自分で応用した例も作って理解を深める