チュートリアル: コマンド ラインでの C プログラムのコンパイル

Visual Studio ビルド ツールには、基本的なコンソール プログラムから完全な Windows デスクトップ アプリケーション、モバイル アプリなど、すべてを作成するために使用できる C コンパイラが含まれています。 Microsoft C/C++ (MSVC) は C および C++ コンパイラであり、最新バージョンでは、C11 や C17 を含む最新の C 言語標準に準拠しています。

このチュートリアルでは、テキスト エディターを使用して基本的な "Hello, World" スタイルの C++ プログラムを作成した後、それをコマンド ラインでコンパイルする方法を示しします。 コマンド ラインで C++ で作業する場合は、「チュートリアル: コマンド ラインでのネイティブ C++ プログラムのコンパイル」を参照してください。 コマンド ラインを使用する代わりに Visual Studio IDE を試す場合は、「チュートリアル: プロジェクトとソリューションの操作 (C++)」または「C++ デスクトップ開発用の Visual Studio IDE の使用」を参照してください

前提条件

このチュートリアルを完了するには、Visual Studio または Build Tools for Visual Studio とオプションのデスクトップ開発 (C++ ワークロード) をインストールしておく必要があります。

Visual Studio は強力な統合開発環境であり、あらゆる機能を備えたエディター、リソース マネージャー、デバッガー、およびさまざまな言語とプラットフォームに対応したコンパイラがサポートされています。 無料の Visual Studio Community エディションなど、これらの機能と、Visual Studio をダウンロードしてインストールする方法については、「Visual Studio のインストール」を参照してください。

Visual Studio の Build Tools for Visual Studio バージョンでは、C と C++ のプログラムをビルドするために必要なコマンド ライン ツールセット、コンパイラ、ツール、ライブラリのみがインストールされます。 ビルド ラボやクラスルームの演習に最適であり、比較的短時間でインストールできます。 コマンド ライン ツールセットのみをインストールするには、Visual Studio のダウンロード ページから Build Tools for Visual Studio をダウンロードして、インストーラを実行します。 Visual Studio インストーラーで、C++ によるデスクトップ開発ワークロードを選択し (以前のバージョンの Visual Studio では、C++ ビルド ツールワークロードを選択して)、[インストール] を選択します

ツールをインストールしたら、コマンド ラインで C または C++ プログラムをビルドするために使用する別のツールがあります。 MSVC には、コマンド ライン環境で使用するツール、ヘッダー、およびライブラリを検索するための複雑な要件があります。 準備なしでは、プレーンなコマンド プロンプト ウィンドウ で MSVC を使用することはできません。 "開発者コマンド プロンプト" ウィンドウが必要です。これは、必要な環境変数がすべて設定されている通常のコマンド プロンプト ウィンドウです。 幸い、Visual Studio には、コマンド ライン ビルド用に環境を設定した開発者コマンド プロンプトを起動するためのショートカットがインストールされています。 残念ながら、開発者コマンド プロンプトのショートカットの名前と配置場所は、Visual Studio のほぼすべてのバージョンと Windows のバージョンによって異なります。 チュートリアルでの最初のタスクは、使用する適切なショートカットを見つけることです。

Note

開発者コマンド プロンプトのショートカットを使用すると、コンパイラとツールおよび必要なヘッダーとライブラリに対する正しいパスが、自動的に設定されます。 これらの値の一部は、ビルド構成ごとに異なります。 いずれかのショートカットを使用しない場合は、これらの環境値を自分で設定する必要があります。 詳細については、「コマンド ラインから MSVC ツールセットを使用する」を参照してください。 ビルド環境は複雑なので、自分で構築するのではなく、開発者コマンド プロンプトのショートカットを使用することを強くお勧めします。

これらの手順は、使用している Visual Studio のバージョンによって異なります。 優先するバージョンの Visual Studio のドキュメントを表示するには、 [バージョン] セレクター コントロールを使用します。 このページの目次の一番上にあります。

Visual Studio 2022 で開発者コマンド プロンプトを開く

Windows 10 以降に Visual Studio 2022 をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 次いで下にスクロールして、(Visual Studio 2022 アプリではなく) [Visual Studio 2022] フォルダーを開きます。 [開発者コマンド プロンプト for VS 2022] を選択して、コマンド プロンプト ウィンドウを開きます。

Visual Studio 2019 で開発者コマンド プロンプトを開く

Windows 10 以降に Visual Studio 2019 をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 次いで下にスクロールして、(Visual Studio 2019 のアプリではなく) [Visual Studio 2019] フォルダーを開きます。 [開発者コマンド プロンプト for VS 2019] を選択して、コマンド プロンプト ウィンドウを開きます。

Visual Studio 2017 で開発者コマンド プロンプトを開く

Windows 10 以降に Visual Studio 2017 をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 次いで下にスクロールして、(Visual Studio 2017 アプリではなく) [Visual Studio 2017] フォルダーを開きます。 [開発者コマンド プロンプト for VS 2017] を選択して、コマンド プロンプト ウィンドウを開きます。

Visual Studio 2015 で開発者コマンド プロンプトを開く

Windows 10 以降に Microsoft Visual C++ Build Tools 2015 をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 次いで下にスクロールし、[Visual C++ Build Tools] フォルダー開きます。 [Visual C++ 2015 x86 Native Tools Command Prompt]\(Visual C++ 2015 x86 Native Tools コマンドプロンプト\) を選択して、コマンド プロンプト ウィンドウを開きます。

別のバージョンの Windows を使用している場合は、[スタート] メニューまたは [スタート] ページで、開発者コマンド プロンプトのショートカットが含まれている Visual Studio Tools フォルダーを探します。 また、Windows の検索機能を使用して "開発者コマンド プロンプト" を検索し、インストールされている Visual Studio のバージョンに一致するものを選択することもできます。 ショートカットを使用してコマンド プロンプト ウィンドウを開きます。

次に、開発者コマンド プロンプトが正しく設定されていることを確認します。 コマンド プロンプト ウィンドウで、cl (または CL。コンパイラ名の場合は大文字と小文字を区別しませんが、コンパイラ オプションの場合は重要です) と入力します。 出力は次のようになります。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

Visual Studio のバージョンとインストールされている更新プログラムによっては、現在のディレクトリまたはバージョン番号に違いがある場合があります。 上記と似た出力が表示される場合は、コマンド ラインで C または C++ のプログラムをビルドする準備ができています。

Note

"'cl' が内部または外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されない、エラー C1034、cl コマンドの実行時にエラー LNK1104などのエラーが発生した場合は、開発者コマンド プロンプトを使用していないか、Visual Studio のインストールに問題があります。 続けるには、この問題を解決する必要があります。

開発者コマンド プロンプトのショートカットが見つからない場合、または入力 cl時にエラー メッセージが表示される場合は、Visual Studio のインストールに問題がある可能性があります。 Visual Studio 2017 以降を使用している場合は、Visual Studio インストーラーで C++ によるデスクトップ開発ワークロードを再インストールしてみます。 詳細については、「Visual Studio での C++ サポートのインストール」を参照してください。 または、Visual Studio のダウンロード ページから Build Tools を再インストールします。 cl コマンドが機能するようになるまで、次のセクションに進まないでください。 Visual Studio のインストールとトラブルシューティングの詳細については、「Visual Studio のインストール」を参照してください。

Note

コンピューターの Windows のバージョンおよびシステムのセキュリティ構成によっては、このチュートリアルに従って作成するアプリケーションを正常にビルドして実行するために、開発者コマンド プロンプト ショートカットを右クリックしてショートカット メニューを開き、[管理者として実行] を選択することが必要な場合があります。

C のソース ファイルを作成してコマンド ラインでコンパイルする

  1. 開発者コマンド プロンプト ウィンドウで「cd c:\」と入力して、現在の作業ディレクトリを C: ドライブのルートに変更します。 次に、「md c:\hello」と入力してディレクトリを作成し、「cd c:\hello」と入力してそのディレクトリに変更します。 このディレクトリに、ソース ファイルとコンパイル済みプログラムが保持されます。

  2. 開発者コマンド プロンプトで「notepad hello.c」と入力します。 メモ帳の警告ダイアログ ボックスが表示されたら [はい] を選択して、作業ディレクトリに新しい hello.c ファイルを作成します。

  3. メモ帳で、次のコード行を入力します。

    #include <stdio.h>
    
    int main()
    {
        printf("Hello, World! This is a native C program compiled on the command line.\n");
        return 0;
    }
    
  4. メモ帳のメニュー バーで [ファイル]>[保存] を選択して、作業ディレクトリに hello.c を保存します。

  5. 開発者コマンド プロンプト ウィンドウに戻ります。 コマンド プロンプトで「dir」と入力して、c:\hello ディレクトリの内容の一覧を表示します。 次のように、ディレクトリの内容の一覧にソース ファイル hello.c が表示されるはずです。

    C:\hello>dir
     Volume in drive C has no label.
     Volume Serial Number is CC62-6545
    
     Directory of C:\hello
    
    10/02/2017  03:46 PM    <DIR>          .
    10/02/2017  03:46 PM    <DIR>          ..
    10/02/2017  03:36 PM               143 hello.c
                   1 File(s)            143 bytes
                   2 Dir(s)  514,900,566,016 bytes free
    
    

    日付と他の詳細は使用しているコンピューターによって異なります。 ソース コード ファイル hello.c が表示されない場合は、作成した c:\hello ディレクトリに切り替えたことを確認し、メモ帳で、ソース ファイルをこのディレクトリに保存したことを確認します。 また、保存したソース コードのファイル名拡張子が、.txt ではなく .c であることを確認します。

  6. プログラムをコンパイルするには、開発者コマンド プロンプトで「cl hello.c」と入力します。

    実行可能プログラムの名前 hello.exe は、コンパイラによって表示される出力情報の行で確認できます。

    c:\hello>cl hello.c
    Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    hello.c
    Microsoft (R) Incremental Linker Version 14.10.25017.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:hello.exe
    hello.obj
    

    Note

    "'cl' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません"、エラー C1034、エラー LNK1104 などのエラーが発生する場合は、開発者コマンド プロンプトが正しくセットアップされていません。 この問題を解決する方法については、「開発者コマンド プロンプトを開く」セクションを再確認してください。

    これとは異なるコンパイラ エラー、リンカー エラー、または警告が発生する場合は、ソース コードを確認してエラーを修正し、保存してからコンパイラを再度実行します。 特定のエラーの詳細については、このページの先頭にある検索ボックスを使用して、エラー番号を検索してください。

  7. プログラムを実行するには、コマンド プロンプトで「hello」と入力します。

    プログラムは、次のテキストを表示して終了します。

    Hello, World! This is a native C program compiled on the command line.
    

    これで、コマンド ラインを使用した C プログラムのコンパイルと実行が完了しました。

次のステップ

この "Hello, World" の例は、C プログラムでできる最も基本的なことです。 実際のプログラムには、ヘッダー ファイルや多くのソース ファイル、ライブラリへのリンク、役に立つ機能があります。

このチュートリアルの手順を使用すれば、示されているサンプル コードを入力する代わりに、独自の C コードを作成できます。 他の場所で見つかる多くの C コード サンプル プログラムをビルドすることもできます。 より多くのソース コード ファイルを含むプログラムをコンパイルするには、それらをすべてコマンド ラインに入力します。

cl file1.c file2.c file3.c

コンパイラは、.file1.exe 名前program1.exeを変更するには、/out リンカー オプションを追加します。

cl file1.c file2.c file3.c /link /out:program1.exe

また、さらに多くのプログラミングの誤りが自動的にキャッチされるよう、/W3 または /W4 の警告レベル オプションを使用してコンパイルすることをお勧めします。

cl /W4 file1.c file2.c file3.c /link /out:program1.exe

コンパイラ cl.exe には他にも多くのオプションがあり、コードのビルド、最適化、デバッグ、分析に適用できます。 簡単に一覧を見るには、開発者コマンド プロンプトで「cl /?」と入力します。 また、さらに複雑なビルド シナリオでは、コンパイルとリンクを別々に行い、リンカー オプションを適用することもできます。 コンパイラとリンカーのオプションと使用方法の詳細については、「C/C++ ビルドのリファレンス」を参照してください。

NMAKE とメイクファイル、または MSBuild とプロジェクト ファイルを使用すると、さらに複雑なプロジェクトをコマンド ラインで構成し、ビルドすることができます。 これらのツールの使用方法の詳細については、「NMAKE リファレンス」および「MSBuild」を参照してください。

C 言語と C++ 言語は似ていますが、同じではありません。 Microsoft C/C++ コンパイラ (MSVC) では、基本的なルールを使用して、コードをコンパイルするときに使用する言語が決定されます。 既定の MSVC コンパイラでは、末尾が .c のファイルはすべて C ソース コードとして扱われ、末尾が .cpp のファイルはすべて C++ ソース コードとして扱われます。 ファイル名拡張子に関係なくコンパイラですべてのファイルが C として扱われるように強制するには、/TC コンパイラ オプションを使用します。

既定では、MSVC は ANSI C89 および ISO C99 標準と互換性がありますが、厳密には準拠していません。 ほとんどの場合、移植可能な C コードは予期されるとおりにコンパイルされて実行されます。 コンパイラからは、ISO C11/C17 における変更のオプション サポートが提供されます。 C11/C17 サポートを使用してコンパイルするには、コンパイラ フラグの /std:c11 または /std:c17 を使用します。 C11/C17 のサポートには Windows SDK 10.0.20201.0 以降が必要です。 Windows SDK 10.0.22000.0 以降が推奨されます。 最新の SDK は、「Windows SDK」ページからダウンロードできます。 この C 開発用 SDK をインストールして使用する方法の詳細と手順については、「C11 と C17 のサポートを Visual Studio にインストールする」を参照してください。

一部のライブラリ関数と POSIX 関数名は、MSVC では非推奨になっています。 関数はサポートされていますが、推奨される名前は変更されています。 詳細については、「CRT のセキュリティ機能」と「コンパイラ警告 (レベル 3) C4996」を参照してください。

関連項目

チュートリアル: 標準 C++ プログラム (C++) の作成
C 言語リファレンス
プロジェクトおよびビルド システム
互換性