2013-11-15 36 views
1

我在C中編寫程序,我面臨一些困難。如果我定義了一個常量(例如#define MAX 100),我可以在某些情況下更改程序中的值嗎?在我寫的主例如MAX = 5,當我運行該程序時,我得到以下:在賦值無效的左值。更改定義的常量的值

+7

聽起來像你不想*常數*那麼,呃? –

+2

只是事實檢查你在這裏,這聽起來像一個編譯錯誤,而不是運行該程序時會得到的錯誤:) – Gian

+1

#define是一個預處理器命令。在編譯時進行預處理期間,代碼中MAX的所有實例都將被替換爲100.它看起來像是想要類似於全局變量的東西或需要定義更多的常量。 –

回答

2

您可以重新定義該宏,使用#undef#define。不是我會推薦的東西,特別是如果在頭文件中完成(因爲頭文件將具有新宏的所有文件,並且如果包含錯誤順序的頭文件,您將會有錯誤的值)。

2

由於有兩個不同的MAX,下面的代碼效果更好。

const int cond1_max = 100; 
const int cond2_max = 5; 
int my_max = 0;    // whatever works for you 

和初始化你的最大如下:

if(cond1) 
    my_max = cond1_max; 
else if(cond2) 
    my_max = cond2_max; 
else { 
    // your backup plan 
} 
0

也許你可以使用此代碼。

#ifdefine MAX 
    #undefine Max 
    #define MAX 5 
    ---Your code--- 
    #undefine MAX 
    #define MAX 100