2015-11-17 95 views
0

我有使用幾個靜態變量的C程序。在運行時啓動宏

#define A 5 
#define B 1 
#define C 60 

現在,我想確定哪些值應該給這些宏以從我的算法中獲得最佳結果。

要找到這些值,我只想爲我想測試的每個值運行我的算法。

爲此,我必須在運行時更改這些宏的值。

有沒有辦法做到這一點? (老實說,因爲這些都是靜態的,所以我不這麼認爲) 替代方案:是否有另一種(更好的)方法來實現我的測試目標?

+2

這些都不是*變量*! –

+0

爲什麼不把它們聲明爲適當範圍的變量? –

回答

2

不,宏沒有「」。他們擴展到你設定的任何東西,就是這樣。

擴展,文學替代它們的發生。他們不是表達式,因此不被評估,編譯器可以給你作爲輸出的預處理代碼,如果你嘗試,你會看到,這

int x = A; 

將被替換(使用定義你貼

int x = 5; 

編譯前,所以不可能在運行時改變值;即編譯後。