首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows 程式設計入門(二):脫離 IDE,掌握命令列編譯環境

     編輯:關於C語言

為什麼要拋棄 IDE?

若想深入理解程式碼的每一個細節,脫離整合開發環境(IDE)是最好的方式。當你不再依賴 Visual Studio 等工具自動產生專案檔、設定編譯選項時,你會被迫思考每一行指令的含義,進而真正掌握編譯、連結的完整流程。此外,撰寫小型測試程式時,只需用文字編輯器寫好原始碼,直接在命令提示字元下編譯執行,省去開啟龐大 IDE 的時間,極大提升效率。

建立命令列編譯環境

1. 驗證 nmake 是否可用

安裝好 VC6 後,按 Win+R 輸入 cmd 開啟命令提示字元,輸入 nmake。若顯示版本資訊而非錯誤,表示環境已就緒;否則需手動設定環境變數。有 Java 或 Linux 經驗的開發者對此應不陌生。

2. 查看與修改 PATH 環境變數

在命令列輸入 echo %path% 可查看目前路徑;或以滑鼠右鍵點選「我的電腦」→「內容」→「進階」→「環境變數」,在「使用者環境變數」中編輯 path。

3. 加入編譯工具路徑

找到 nmake.exe 所在目錄(例如 D:\Program Files\Microsoft Visual Studio\VC98\Bin),將其加入 path 最前端。同目錄下的 CL.EXE(編譯器)、LINK.EXE(連結器)及 VCVARS32.BAT 稍後也會用到。

4. 驗證設定

重新開啟命令提示字元,再次執行 echo %path% 確認路徑已生效,然後執行 nmake 應顯示:

Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.

這代表 nmake 已正常運作(找不到 Makefile 是預期行為)。

5. 解決 CL.EXE 缺少 mspdb60.dll 問題

執行 cl 若報錯找不到 mspdb60.dll,請在系統中搜尋該檔案(通常在 D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin),將其目錄也加入 path,以分號(;)分隔。同樣重啟命令列驗證 cl 與 link 指令是否正常顯示選項說明。

實戰:Hello World 不用 IDE

在任意目錄建立 hello.c:

#include <stdio.h>

int main() {
    printf("abcdefg. ");
    return 0;
}

進入該目錄,執行:

D:\>cd test
D:\test>cl hello.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

hello.c
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:hello.exe
hello.obj

D:\test>hello.exe
abcdefg.

編譯連結一氣呵成,產生 hello.exe 並正確輸出。是不是很簡單?

思考題:深入探究編譯細節

  1. 若副檔名改為 .cpp,cl 行為有何不同?
  2. 多個原始檔能否直接用 cl 編譯成單一 .exe?
  3. 入口點改為 void main() 或 void start() 可行嗎?
  4. stdio.h 這類標準庫頭檔是如何被系統整合的?
  5. 函式實際實現在 .lib 中,Windows 如何將其連結進 .exe?
  6. 若輸出中文「你好,世界」會發生什麼?原因為何?

這些疑問將在下一篇「hello.c 的疑惑」中逐一解答。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved