1

我正在用 C 编写一个程序,但遇到了一些困难。如果我定义一个常量(例如 #define MAX 100),我可以在程序中的某些情况下更改它的值吗?在我写的主要内容中,例如 MAX=5,当我运行程序时,我得到以下信息: invalid lvalue in assignment 。

4

4 回答 4

2

您可以重新定义宏,再次使用#undef#define。我不建议这样做,特别是如果在头文件中完成(因为头文件的所有文件#include都将具有新的宏,并且如果您以错误的顺序包含头文件,则无论如何您将获得错误的值)。

于 2013-11-15T08:31:15.407 回答
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
}
于 2013-11-15T08:36:01.213 回答
1

也许您可以使用此代码。

#ifdefine MAX 
    #undefine Max 
    #define MAX 5
     ---Your code---
    #undefine MAX 
    #define MAX 100
于 2013-11-15T08:55:05.053 回答
0

不应以这种方式使用宏。这就是为什么它是宏而不是变量的原因。

您需要的是全局变量(http://farside.ph.utexas.edu/teaching/329/lectures/node19.html)。

于 2013-11-15T10:16:37.663 回答