巨集定義中引數使用

2022-07-28 05:06:15 字數 914 閱讀 9317

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, 

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);

2. 巨集中引數當做字串使用

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,...