2013-11-26 120 views
-3

我有問題。如果我定義的主要功能之前的變量是這樣的:定義主變量前的變量

#define N 10 

然後在主要我不能改變這個變量?像這樣:

N=N+1; 

有沒有什麼辦法讓N在main之前定義的時候變大?

+2

'N'不一個變量,它只是一個預處理宏。 –

回答

6

這是一個宏的定義,而不是全局變量。試試這個:

int i; 

int main() 
{ 
    i = 10; 

    return 0; 
} 
1

首先,你不用宏來做這件事,你需要一個全局變量。僅供參考:在編譯之前,您的代碼中的所有宏將被其實際值替換,無論您使用該宏。 因此,如果您定義了一個宏,然後再次嘗試並將其修改爲Macro,那麼它會考慮它的最新值。

你覺得你有什麼做的是:

#define N (10) 

N = N+1; //will this change N to 11? No, It wont! 

int main() 
{ 
    printf("\nI code rubbish"); 
    return 0; 
} 

你可以做的是:

#define N (10) 
//Some more macros 
#define N (50) 

int i = 10; 

//Will i++ work here??? No, It wont!!! 
int main(void) 
{ 
    int k = 0; 
    i++; 
    k = N; //What is N here, 10 or 50? It is 50! 
    printf("\nDo not learn to code, instead code to learn"); 
    return 0; 
} 

希望這告訴你什麼是錯的您的理解