FAQ

FAQ

『専門学校講師が教える はじめてのC言語 改訂第2版』向けの情報です。

環境構築(第2章の重要補足)

2026年9月29日更新: 第2章の環境構築について、WindowsのPath設定手順と画面例を見直しました。正誤・重要補足もあわせてご確認ください。

環境構築・最初に確認

Q. ソフトウェアの公式入手先はどこですか?

Q. VS Codeがまだインストールされていません。

Visual Studio Code公式サイトからWindows用のUser Installerをダウンロードし、画面の案内に従ってインストールしてください。インストール完了後にVS Codeを起動します。

VS Codeは既定では英語表示ですが、WindowsなどOSの表示言語を検出し、対応するLanguage Packのインストールを案内することがあります。日本語WindowsではJapanese Language Packがすでに導入済み、または自動的に案内される場合があります。

本書の画面表示に合わせたい場合は、コマンドパレットの Configure Display Language から 日本語(ja) を選択してください。Japanese Language Packが未導入なら、その操作からインストールできます。日本語以外のWindowsを使っている場合でも、日本語UIを選択できます。表示言語を変更した場合は、案内に従ってVS Codeを再起動してください。

なお、日本語以外のUIを使い続けてもC言語の学習自体には支障ありません。その場合は、本書に記載された日本語のメニュー名を同等の英語・各言語の項目に読み替えてください。

Q. 「C/C++ Extension Pack」のおすすめが何度も表示されます。

本書では、VS Codeが繰り返しおすすめ表示するMicrosoft公式の「C/C++ Extension Pack」をインストールする手順に統一します。Extension Packには複数の拡張機能が含まれますが、本書で必須となる中心機能は「C/C++」です。その他は一緒にインストールされても問題ありませんが、用途を下表のように区別してください。

拡張機能本書での扱い用途
C/C++使用しますIntelliSense、コードナビゲーション、デバッグ支援など
C/C++ Themes必須ではありませんVisual Studio風の配色テーマや、C/C++のセマンティックな色分けに対応したテーマを追加します。通常の構文色分け自体はC/C++拡張とVS Codeの標準テーマでも利用できます。
C/C++ DevTools本書では使用しませんGitHub Copilotのエージェントモードから、C/C++のシンボル参照やCMakeのビルド/テスト機能を呼び出すための拡張です。Copilotを使わなければ学習手順には影響しません。
CMake Tools本書では使用しませんCMakeを利用するプロジェクト向けのビルド・テスト支援です。本書ではまずGCCをコマンドから直接実行するため使用しません。

Extension PackをインストールしてもGCCコンパイラ自体はインストールされません。GCCは本書のMSYS2 UCRT64の手順で別途インストールします。

VS Codeの右下に次のようなおすすめ通知が表示された場合は、「C/C++ Extension Pack」をインストールして構いません。

VS Code右下にMicrosoft C/C++ Extension Packのおすすめ通知が表示されている画面
画面例:C/C++ Extension Packのおすすめ通知

Q. VS Codeの自動保存は有効にした方がよいですか?

はい。本書では、保存忘れによって古いソースコードをコンパイルしてしまうことを防ぐため、VS Codeの自動保存を有効にして学習することをおすすめします。

  1. VS Codeの[ファイル]メニューを開きます。
  2. [自動保存]をクリックして有効にします。

この切り替えを有効にすると、通常は編集後しばらくして自動保存されます。必要に応じて Ctrl + S でも保存できます。

.editorconfig の改行コード設定は保存時に反映されるため、自動保存を有効にしたあとも、Cソースファイルを保存して画面右下が LF になっていることを確認してください。

VS Code公式:Save / Auto Save →
※ VS Code公式のWebドキュメントは英語です。日本語Language PackはVS Code本体の表示言語を日本語化するためのもので、公式Webドキュメントを日本語化するものではありません。

Q. .editorconfigを置いてもCRLFのままです。

本書付属の .editorconfig をVS Codeで利用するため、「EditorConfig for VS Code」(Publisher: EditorConfig)を別途インストールしてください。これはC/C++ Extension Packには含まれません。

  1. VS Code左側の「拡張機能」を開きます。
  2. EditorConfig と検索します。
  3. Publisherが「EditorConfig」の「EditorConfig」をインストールします。
  4. 必要に応じてVS Codeを再起動します。
  5. C:\C_Learning をフォルダーとして開き、その配下のCソースを保存します。
  6. 画面右下が LF になっていることを確認します。

拡張機能画面で「EditorConfig」と検索し、Publisherが「EditorConfig」の拡張機能を確認してインストールします。

VS Codeの拡張機能画面でEditorConfigを検索し、インストールボタンが表示されている画面
画面例:EditorConfig for VS Code(インストール前)

CRLF の場合は、右下の CRLF をクリックして LF を選択できます。

Q. MSYS2の更新は2回実行すれば完了ですか?

いいえ。 実行回数ではなく、更新対象が残っていないことを確認して判断します。
必要に応じて pacman -Syu を再実行し、there is nothing to do など、更新対象がない状態を確認してください。

次の画面のように、再実行して更新対象が残っていないことを確認します。

MSYS2でpacman -Syuを再実行し、更新対象がないことを確認している画面
画面例:MSYS2の更新対象が残っていない状態

Q. WindowsのPathはどこから追加しますか?

重要:本書の訂正箇所です。 ユーザー環境変数の[Path]を選択したあと、[編集]をクリックしてから[新規]へ進んでください。

ユーザー環境変数の Path に 「C:\msys64\ucrt64\bin」 を追加します。以下の順番で設定してください。

入力する文字列: C:\msys64\ucrt64\bin
※前後に引用符や記号を付けず、C: から bin までをそのまま入力してください。MSYS2 UCRT64ターミナルで表示される /ucrt64/bin や /ucrt64/bin/gcc はMSYS2内での表記です。Windowsの環境変数Pathには C:\msys64\ucrt64\bin を入力します。

1Windowsで「環境変数」と検索します

検索結果の「環境変数を編集」をクリックします。

Windows検索で「環境変数を編集」を赤枠で示した画面
「環境変数を編集」をクリックします。

2[環境変数]をクリックします

「システムのプロパティ」が開いたら、右下の[環境変数]をクリックします。

システムのプロパティ画面で環境変数ボタンを赤枠で示した画面
[環境変数]をクリックします。

3上側の「ユーザー環境変数」で[Path]を選択し、[編集]をクリックします

ここが本書の訂正箇所です。上側の「ユーザー環境変数」で[Path]を選択してから、[編集]をクリックしてください。

ユーザー環境変数のPath行と編集ボタンを赤枠で示した画面。ユーザー名はぼかしてある
[Path]を選択し、[編集]をクリックします。

4[新規]をクリックします

[環境変数名の編集]画面が開いたら、[新規]をクリックします。

環境変数名の編集画面で新規ボタンを赤枠で示した画面。ユーザー名はぼかしてある
[新規]をクリックします。

5C:\msys64\ucrt64\bin を入力し、[OK]で確定します

新しく追加された行に C:\msys64\ucrt64\bin を入力し、内容を確認して[OK]をクリックします。

PathにC:\msys64\ucrt64\binを入力した行を赤枠で示した画面。ユーザー名はぼかしてある
C:\msys64\ucrt64\bin が追加されていることを確認します。

設定後: すでに開いているPowerShell、Windows Terminal、VS Codeのターミナルには変更が反映されないことがあります。いったん閉じて開き直してから gcc --version などで確認してください。

Q. gcc --version は表示されますが、コンパイル時に cc1 のエラーが出ます。

gcc --version が表示されても、実際のコンパイルで使用するGCC内部のプログラム cc1.exe を起動できず、次のようなエラーになる場合があります。

gcc.exe: fatal error: cannot execute 'cc1': CreateProcess: No such file or directory
compilation terminated.

まず、普段コンパイルに使っているVS CodeのPowerShellターミナルで、次の順に確認してください。

  1. Get-Command gcc | Select-Object -ExpandProperty Source を実行します。C:\msys64\ucrt64\bin\gcc.exe が表示されることを確認します。
  2. gcc -print-prog-name=cc1 を実行します。GCCが使用しようとしている cc1.exe の場所が表示されます。
  3. Test-Path (gcc -print-prog-name=cc1) を実行します。True なら、その場所に cc1.exe が存在します。False なら、GCCパッケージのファイルが不足している可能性があります。

False の場合: MSYS2 UCRT64ターミナルを開き、まずこのページの「MSYS2の更新は2回実行すれば完了ですか?」の手順で更新を完了させます。その後、次のコマンドでGCCパッケージを再インストールしてください。

pacman -S mingw-w64-ucrt-x86_64-gcc

True なのに同じエラーになる場合: cc1.exe は存在しているため、単純なファイル欠損とは限りません。MSYS2では、ウイルス対策ソフトによる誤検知の事例も案内されています。Windows セキュリティを使用している場合は、[Windows セキュリティ]→[ウイルスと脅威の防止]→[保護の履歴]を開き、cc1.exe や C:\msys64\... のファイルが検疫されていないか確認してください。

検疫されている場合、ファイルがMSYS2公式パッケージ由来であり、誤検知だと確認できた場合に限り、Microsoftの案内に従って復元・許可を行います。学校・勤務先のPCでは、自分で許可せず管理者へ確認してください。

MSYS2公式FAQ:ウイルス対策ソフトによる検出について →
Microsoft:Windows セキュリティの保護の履歴 →

画面・動作環境

Q. 本書はどの環境を前提にしていますか?

Windows 11上で、Visual Studio Code、MSYS2 UCRT64、GCCを使う構成を基本としています。各ソフトウェアの画面や配布状況は変わる場合があるため、画面が大きく異なる場合は、更新情報も確認してください。

Q. 画面が本書と少し違います。

ソフトウェア更新で表示が変わることがあります。操作の目的と入力内容が同じかを確認してください。大きな変更がある場合は、更新情報で補足します。

Q. 色や太字が表示されない/文字化けのように見えます。

\x1b は、ESCという制御文字を表す書き方です。対応するターミナルでは、\x1b[31mのような指定を色や装飾として解釈します。色や太字はC言語そのものの機能ではなく、ターミナル側の機能です。

うまく表示されない場合は、Windows Terminal、Visual Studio Codeの統合ターミナル、MSYS2 UCRT64ターミナルなどで確認してください。斜体・点滅・薄い表示などは、ターミナルによっては表示されないことがあります。また、出力をファイルに保存すると、色や装飾の指定に使う制御文字も一緒に保存され、文字化けのように見えることがあります。

装飾した出力の後には、表示を元に戻すためのリセット用シーケンスを出力してください。サンプルコードには、ANSIエスケープシーケンスの表示を確認するためのansi_escape.hとansi_escape_demo.cを収録しています。

Q. WindowsでC言語の日本語出力が文字化けします。

ソースファイルをUTF-8で保存していても、実行するターミナルの出力コードページや文字の表示環境が合っていないと、日本語が文字化けすることがあります。まず、ソースの保存形式がUTF-8であることと、実行しているターミナルを確認してください。

Windowsでは chcp 65001 の表示だけで、実行プログラムの出力設定まで一致していると判断しないでください。入力用と出力用のコードページは別々に管理されています。

Windows専用の対処例として、main の先頭で、文字を出力する前に SetConsoleOutputCP(CP_UTF8); を呼び出す方法があります。

#include <stdio.h>
#ifdef _WIN32
#include <windows.h>
#endif

int main(void)
{
#ifdef _WIN32
    SetConsoleOutputCP(CP_UTF8);
#endif
    printf("日本語の表示を確認します。\n");
    return 0;
}

SetConsoleOutputCP はWindows APIであり、標準C言語の機能ではありません。macOSやLinuxでは使用しません。また、この方法だけですべての環境で日本語表示が成功するとは限りません。ソース・コンパイラの文字コード設定、使用するターミナルやフォントによって結果が異なります。chcp 65001 の実行後に設定が変化する原因は、現時点で特定できていません。

学習・サンプルコード

Q. サンプルコードはどこから入手できますか?

「サンプルコード」ページから購入者確認へ進んでください。

Q. マクロ展開後のソースや、コンパイル途中のアセンブリを確認できますか?

確認には、本文に掲載しているCソースをそのまま使えます。gcc -E -P source.cを実行すると、マクロ展開などの前処理が終わった後の内容を画面で確認できます。-Pは、確認しやすいように行番号などの情報を省くための指定です。

gcc -S source.cを実行すると、実行ファイルを作る前のアセンブリコードを確認できます。出力されるファイル名や内容の細部は、環境やGCCのバージョンによって異なる場合があります。

これらは、本文と付録Hの内容を確認するときに使える方法です。プリプロセッサやマクロ展開だけを確認するための追加サンプルファイルはありません。必要に応じて、本文に掲載しているサンプルコードを使って確認してください。

購入・閲覧・お問い合わせ

Q. Kindle版でも同じサポートを使えますか?

はい。第2版のKindle版とペーパーバック版は、どちらもこの第2版サポートページをご利用いただけます。ただし、表示の見え方は端末やアプリによって異なる場合があります。

Q. スマートフォンだけでも読めますか?

閲覧自体は可能でも、固定レイアウトでは小さく感じる場合があります。コードや図を確認する学習では、タブレットまたはPCの利用を推奨します。

Q. 誤りを見つけた場合は?

まず正誤表をご確認ください。未掲載の誤記・誤植と思われる箇所がある場合は、お問い合わせフォームからご連絡ください。環境構築やサンプルコードの使い方など、個別の技術サポートは行っていません。