很多時候我們需要乙個函式可以返回多個返回值,同時還希望能夠獲得這個函式的執行狀態從而判斷這個函式是執行成功還是失敗。於是我們可以利用函式的返回值作為函式執行狀態的判定依據,同時傳入乙個引數用於接收函式執行完成所得到的資料。像下面這個例子一樣:
// 巨集定義
#definecommunicate_failed-1
#definecommunicate_successful0
#definecmd_get_devpara0
#definecmd_set_devpara1
#definein
#defineout
// 函式宣告
int getdeviceparameter(char* _stvideoinputrsp, char* _stvideoinputreq, int _sizersp, int _sizereq, int _cmd);
// 變數宣告及初始化宣告 tvideoinputreq 和 tvideoinputrsp 兩個結構體變數
tvideoinputreqtvideoinputreq;
tvideoinputrsptvideoinputrsp;
memset(tvideoinputreq, 0, sizeof(tvideoinputreq));
memset(tvideoinputrsp, 0, sizeof(tvideoinputrsp));
// 主函式
int main()else
...return 0;
// 子函式
int getdeviceparameter(char* _stvideoinputrsp, char* _stvideoinputreq, int _sizersp, int _sizereq, int _cmd)else if(cmd_set_devpara == _cmd)
在這個例子裡,使用空的巨集定義 in 和 out 來指明引數是傳入還是傳出,即指明引數是用來向函式傳入資料還是用於接收函式處理後傳出的資料。並使用巨集來對函式返回值進行判斷。還使用巨集來傳遞函式要執行的命令。這些使用巨集的寫法可以使**更便於閱讀。
巨集定義中引數使用
1.巨集傳遞變長引數 最近用c語言寫乙個程式,經常呼叫shell或者其他命令,中多處出現如下 char script cmd cmd max len 1 memset script cmd,0,sizeof script cmd sprintf script cmd,cmd s s param1,p...
巨集定義及帶引數的巨集定義
include 巨集定義,通常用於定義常量,在 轉換成二進位制檔案時會將 中的巨集名稱替換成值 define 巨集名稱 值 define a 1 帶引數的巨集 fun a,b 為巨集的名稱 a b為巨集的值 帶引數的巨集比函式效率高 define fun a,b a b 為了保證替換結果,最好加入 ...
不帶引數的巨集定義與帶引數的巨集定義
巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串...