逐步解說:在命令列上編譯 C 程式

Visual Studio 建置工具組含 C 編譯器,可讓您用來建立從基本主控台程式到完整 Windows 桌面應用程式、行動應用程式等所有專案。 Microsoft C/C++ (MSVC) 是 C 和 C++ 編譯器,其最新版本符合一些最新的 C 語言標準,包括 C11 和 C17。

本逐步解說示範如何使用文字編輯器建立基本 「Hello, World」 樣式 C 程式,然後在命令列上編譯。 如果您想要在命令列上使用 C++,請參閱 逐步解說:在命令列 上編譯原生 C++ 程式。 如果您想要嘗試 Visual Studio IDE 而不是使用命令列,請參閱 逐步解說:使用專案和方案 (C++) 或使用 Visual Studio IDE for C++ 桌面開發

必要條件

若要完成本逐步解說,您必須已安裝 Visual Studio 或 Visual Studio 的建置工具,以及使用 C++ 進行選擇性的桌面開發工作負載。

Visual Studio 是功能強大的整合式開發環境,可支援許多語言和平臺的完整編輯器、資源管理員、偵錯工具和編譯器。 如需這些功能以及如何下載及安裝 Visual Studio 的資訊,包括免費的 Visual Studio Community 版本,請參閱 安裝 Visual Studio

Visual Studio 的 Build Tools for Visual Studio 版本只會安裝命令列工具組、編譯器、工具和程式庫,以建置 C 和 C++ 程式。 它非常適合建置實驗室或教室練習,而且安裝速度相對較快。 若要只安裝命令列工具組,請從 Visual Studio 下載 頁面下載適用于 Visual Studio 的 Build Tools 並執行安裝程式。 在 Visual Studio 安裝程式中,選取 [ 使用 C++ 進行桌面開發] 工作負載(在舊版 Visual Studio 中,選取 C++ 建置工具 工作負載),然後選擇 [ 安裝 ]。

當您安裝工具時,有另一個工具將用來在命令列上建置 C 或 C++ 程式。 MSVC 對於命令列環境有複雜的需求,可尋找其所使用的工具、標頭和程式庫。 您無法在一般命令提示字元視窗中 使用 MSVC,而不需要進行一些準備。 您需要開發人員 命令提示 字元視窗,這是已設定所有必要環境變數的一般命令提示字元視窗。 幸運的是,Visual Studio 會安裝快捷方式,讓您啟動已設定命令列組建環境的開發人員命令提示字元。 不幸的是,開發人員命令提示字元快捷方式的名稱及其所在位置幾乎在 Visual Studio 的每個版本和不同版本的 Windows 上都不同。 您的第一個逐步解說工作是尋找要使用的正確快捷方式。

注意

開發人員命令提示字元快捷方式會自動設定編譯器和工具的正確路徑,以及任何必要的標頭和程式庫。 每個組建組態的其中一些值都不同。 如果您沒有使用其中一個快捷方式,則必須自行設定這些環境值。 如需詳細資訊,請參閱 從命令列 使用 MSVC 工具組。 由於建置環境很複雜,因此強烈建議您使用開發人員命令提示字元快捷方式,而不是自行建置。

這些指示會根據您使用的 Visual Studio 版本而有所不同。 若要查看您慣用 Visual Studio 版本的檔,請使用 版本 選取器控制項。 其位於此頁面目錄頂端。

在 Visual Studio 2022 中開啟開發人員命令提示字元

如果您已在 Windows 10 或更新版本上安裝 Visual Studio 2022,請開啟[開始] 功能表,然後選擇 [ 所有應用程式 ]。 然後向下捲動並開啟 Visual Studio 2022 資料夾(不是 Visual Studio 2022 應用程式)。 選擇 VS 2022 的開發人員命令提示字元以開啟命令提示字元視窗。

在 Visual Studio 2019 中開啟開發人員命令提示字元

如果您已在 Windows 10 或更新版本上安裝 Visual Studio 2019,請開啟[開始] 功能表,然後選擇 [ 所有應用程式 ]。 然後向下捲動並開啟 Visual Studio 2019 資料夾(而非 Visual Studio 2019 應用程式)。 選擇 VS 2019 的開發人員命令提示字元以開啟命令提示字元視窗。

在 Visual Studio 2017 中開啟開發人員命令提示字元

如果您已在 Windows 10 或更新版本上安裝 Visual Studio 2017,請開啟[開始] 功能表,然後選擇 [ 所有應用程式 ]。 然後向下捲動並開啟 Visual Studio 2017 資料夾(不是 Visual Studio 2017 應用程式)。 選擇 VS 2017 的開發人員命令提示字元以開啟命令提示字元視窗。

在 Visual Studio 2015 中開啟開發人員命令提示字元

如果您已在 Windows 10 或更新版本上安裝 Microsoft Visual C++ Build Tools 2015,請開啟[開始] 功能表,然後選擇 [ 所有應用程式 ]。 然後向下捲動並開啟 Visual C++ Build Tools 資料夾。 選擇 Visual C++ 2015 x86 Native Tools 命令提示字元 以開啟命令提示字元視窗。

如果您使用不同版本的 Windows,請查看包含開發人員命令提示字元快捷方式的 Visual Studio 工具資料夾[開始] 功能表或 [開始] 頁面。 您也可以使用 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++ 程式。

注意

如果您收到錯誤,例如「'cl' 無法辨識為內部或外部命令、可操作的程式或批次檔」、錯誤 C1034 或當您執行 cl 命令時發生錯誤LNK1104,則表示您不是使用開發人員命令提示字元,或是安裝 Visual Studio 時發生問題。 您必須先修正此問題,才能繼續。

如果您找不到開發人員命令提示字元快捷方式,或在輸入 cl 時收到錯誤訊息,則 Visual Studio 安裝可能會發生問題。 如果您使用 Visual Studio 2017 或更新版本,請嘗試在 Visual Studio 安裝程式中重新安裝 使用 C++ 進行桌面開發工作負載。 如需詳細資訊,請參閱 在 Visual Studio 中安裝 C++ 支援。 或者,從 Visual Studio 下載 頁面重新安裝 [建置工具]。 在命令正常運作之前 cl ,請勿繼續下一節。 如需安裝和疑難排解 Visual Studio 的詳細資訊,請參閱 安裝 Visual Studio

注意

視電腦上的 Windows 版本和系統安全性設定而定,您可能必須以滑鼠右鍵按一下以開啟開發人員命令提示字元快捷方式的快捷方式功能表,然後選擇 [以管理員istrator 執行],以成功建置並執行您遵循本逐步解說建立的程式。

建立 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 目錄,並在 記事本 中,確定您已將此原始程式檔儲存在此目錄中。 也請確定您已使用 .c 副檔名儲存原始程式碼,而不是 .txt 副檔名。

  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
    

    注意

    如果您收到錯誤,例如「'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 和 makefiles,或 MSBuild 和專案檔,在命令列上設定及建置更複雜的專案。 如需使用這些工具的詳細資訊,請參閱 NMAKE 參考 MSBuild

C 和 C++ 語言很類似,但不同。 Microsoft C/C++ 編譯器 (MSVC) 會使用基本規則來判斷編譯器代碼時要使用的語言。 根據預設,MSVC 編譯器會將以 C 原始程式碼結尾 .c 的所有檔案,以及以 C++ 原始程式碼結尾 .cpp 的所有檔案。 若要強制編譯器將所有檔案視為 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 或更新版本。 您可以從 Windows SDK 頁面下載最新的 SDK 。 如需詳細資訊,以及如何安裝和使用此 SDK 進行 C 開發,請參閱 在 Visual Studio 中安裝 C11 和 C17 支援。

某些程式庫函式和 POSIX 函式名稱已被 MSVC 取代。 支援函式,但慣用的名稱已變更。 如需詳細資訊,請參閱 CRT 編譯器警告 (層級 3) C4996 中的安全性功能。

另請參閱

逐步解說:建立標準 C++ 程式 (C++)
C 語言參考
專案和建置系統
相容性