2017-04-22 71 views
-3

我有寫這樣還有沒有使用宏定義做到這一點的另一種方法?

int funA(){ 
//this define is to do something with a,b....z 
#define _MyMacro_ do{\ 
a....\ 
b,a...\ 
z....\ 
...\ 
}while(0); 

int a; 
char b; 
.... 
float z; 

.... 
if(condition){ 
_MyMacro_; 
} 
else if(condition2){ 
    a++;//just change value 
    ...//do some change to a,b,z 

    if(...){ 
    _MyMacro_; 
    } 
    else{...} 
    } 

//do something with a,b,...z 

_MyMacro_; 

...  

} 

功能我認爲這不是如果我使用功能

void subfunc(int &a,char &b,.....,float &z) 

也許是更好的,使用的#define 一個很好的方式,但有很多PARAMS

我想知道一個更好的方式來做到這一點,謝謝

+0

這是很多......並很難看到你想要做什麼。通過'z'捕獲'a'的lambda可能會有所幫助。 – aschepler

回答

1

使用的功能是最適合modularizin g你的代碼和編譯器已經準備好處理它們了,參數的數量並不重要。宏應該主要用於配置編譯變體。

請注意,您始終可以使用結構對參數進行分組。

+0

將變量分組到結構中以組織它們並匹配程序的目標是一種方法。 –

相關問題