2013-11-26 80 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; 
} 

希望这告诉你什么是错的您的理解