1. 巨集傳遞變長引數:
最近用c語言寫乙個程式,經常呼叫shell或者其他命令,**中多處出現如下**:
char script_cmd[cmd_max_len + 1] = ;每呼叫一次就是三行**,看著也十分不爽。偶然間學會通過巨集傳遞引數,**瞬間簡化很多:memset(script_cmd,
0, sizeof
(script_cmd));
sprintf(script_cmd,
"cmd %s %s
", param1, param2);
system(script_cmd);
#define execute_script(script_cmd_array, format,args...) \memset(script_cmd_array,2. 巨集中引數當做字串使用0, sizeof
(script_cmd_array)); \
sprintf(script_cmd_array, format, ##args); \
system(script_cmd_array);
char script_cmd[cmd_max_len + 1] = ;
execute_script(script_cmd,
"cmd %s %s
", param1, param2);
1#define remove_shmem(shmid) \
2if (shmid != -1
) \6}
78int main (void)9
輸出:remove myshm failed!
巨集定義及帶引數的巨集定義
include 巨集定義,通常用於定義常量,在 轉換成二進位制檔案時會將 中的巨集名稱替換成值 define 巨集名稱 值 define a 1 帶引數的巨集 fun a,b 為巨集的名稱 a b為巨集的值 帶引數的巨集比函式效率高 define fun a,b a b 為了保證替換結果,最好加入 ...
不帶引數的巨集定義與帶引數的巨集定義
巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串...
c 中的巨集定義 g 中引數
如果定義debug時才能出現的函式呼叫,那麼就可以這樣寫 ifdef debug define debug x endif ifdef release define debug x endif 使用就可以直接使用debug abc 然後在g 或者gcc編譯時使用 g def.cpp d deubg,...