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

C語言巨集定義:#define FORMAT 字串常數替換

     編輯:C 語言問答

#define 巨集替換機制

代碼片段:


#define FORMAT "%d\n%s\n%f\n........"

作用解析

#define 是預處理器指令,在編譯前進行文本替換:

  • 定義巨集名稱 FORMAT
  • 替換體為字串字面值 "%d\n%s\n%f\n........"
  • 後續代碼中出現 FORMAT 皆被替換為該字串

使用示例


printf(FORMAT, 10, "hello", 3.14);
// 預處理後展開為:
printf("%d\n%s\n%f\n........", 10, "hello", 3.14);

關鍵特性

  • 無類型檢查,純文本替換
  • 不佔用運行時記憶體,編譯期完成
  • 可定義常數、字串、代碼片段、甚至帶參數的類函數巨集
  • 慣例:巨集名全大寫,區別於變量/函數

優缺點

現代 C 建議

  • 常數優先用 const 或 enum (有類型、有作用域、可除錯)
  • 函數式巨集極簡單時可用,複雜邏輯改用 inline 函數
  • 字串常數可用 const char *const FORMAT = "...";
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
優點缺點
編碼複用、可讀性提升除錯困難(符號表無巨集)
編譯期計算、零開銷副作用風險(參數多次求值)
條件編譯配合靈活作用域全域,易命名衝突