2013-01-06 52 views
0

我想將參數保存爲宏名稱,然後將其用於另一個宏函數。將變量保存爲宏名稱並在許多宏函數中使用它

我正在尋找類似的東西

#define MACRO1(X) MACRO_NAME = X 

#define MACRO2(Y) Y = MACRO_NAME; 

1int main() 
{ 
    int a = 2, b; 

    MACRO1(a); 
    ... 
    MACRO2(b) 

} 

是否有可能做到這一點?以及正確的方法是什麼?

我上面給的代碼只是什麼,我想

+0

想到的問題是:爲什麼?你能否展示一個現實的用例來解釋你想要做的更好? – Mat

+0

不,這是非常不可能的,沒有正確的方法來做到這一點。這是最糟糕的一種宏觀虐待。 – meagar

回答

1

預處理器只做文本替代品,它不「跑」的代碼的例子。它所做的只是根據定義的宏(和#include指令等)轉換代碼,然後將其交給編譯器。

你上面的例子將意味着,編譯器會看到:

int a = 2, b; 

MACRO_NAME = a; 
... 
b = MACRO_NAME; 

這將不建,因爲沒有所謂的MACRO_NAME變量。你的問題有點不清楚,你應該澄清你想要做什麼,以及爲什麼。

+0

我希望預處理器在所有地方調用MACRO_NAME的文本替換,並將MACRO_NAME值分配到另一個宏 – MOHAMED

0

我想你需要改變下面的代碼。聲明MACRO_NAME一個int變量;因此,對第一個宏調用進行內聯替換將產生類似「MACRO_NAME = a」的代碼,並且它將毫無問題地進行編譯。

#define MACRO1(X) MACRO_NAME = X 
#define MACRO2(Y) Y = MACRO_NAME; 

int main() { 
    int a = 2, b; 
    int MACRO_NAME; 
    MACRO1(a); 
    MACRO2(b) 
}