環境變數由「變數名=值」組成(如 PATH=C:\WINDOWS),是控制程式行為而不需重編譯的強大機制。
SET VERSION=1.1.3VERSION=1.1.3(無需 SET)ANSI C 標準函數,宣告於 <stdlib.h>:
char *getenv(const char *name);
// 成功回傳值指標,失敗回傳 NULL
範例:
#include <stdlib.h>
#include <stdio.h>
int main() {
char *descr = getenv("PATH");
if (descr) printf("PATH = %s", descr);
else printf("未定義");
}
非 ANSI 標準,但 Windows/Unix 皆支援(<stdlib.h>):
int putenv(const char *var); // 格式 "VAR=VAL"
// 成功回傳 0,失敗 -1
// 變數已存在則覆蓋;若不想覆蓋,先用 getenv() 檢查
範例:
int stat = putenv("TEMP=C:\\TEMP"); // 雙反斜線跳脫
if (!stat) printf("設定失敗");
wchar_t *_wgetenv(const wchar_t *name);
int _wputenv(const wchar_t *var); // 適用 NT/Win2000+
透過環境變數控制除錯輸出,客戶端無需重編譯即可啟用:
void func();
#include <stdlib.h>
#include <stdio.h>
int main() {
bool debug = false;
if (getenv("DBG")) debug = true; // 定義 DBG 即啟用
if (debug) printf("calling func\n");
func();
if (debug) printf("returned from func\n");
}
執行前在命令列 SET DBG=1 即可看到除錯訊息。這在無法重建部署的現場除錯極為實用。