C 更改已定义常量的值

C 更改已定义常量的值,c,C,我正在用C写一个程序,我面临一些困难。如果我定义了一个常数(例如#define MAX 100),在某些情况下我能在程序中更改它的值吗??主要是我编写了MAX=5的例子,当我运行程序时,我得到以下结果:赋值中的左值无效 您可以使用#unde和#define重新定义宏。但我不建议这样做,尤其是在头文件中执行时(因为所有包含头文件的文件都将具有新宏,如果以错误的顺序包含头文件,则无论如何都会具有错误的值)。您可以重新定义宏,再次使用#unde和#定义它。但我不建议这样做,特别是在头文件中执行时(因为

我正在用C写一个程序,我面临一些困难。如果我定义了一个常数(例如#define MAX 100),在某些情况下我能在程序中更改它的值吗??主要是我编写了MAX=5的例子,当我运行程序时,我得到以下结果:赋值中的左值无效

您可以使用
#unde
#define
重新定义宏。但我不建议这样做,尤其是在头文件中执行时(因为所有包含头文件的文件都将具有新宏,如果以错误的顺序包含头文件,则无论如何都会具有错误的值)。

您可以重新定义宏,再次使用
#unde
#定义它。但我不建议这样做,特别是在头文件中执行时(因为所有包含头文件的文件都会有新的宏,并且如果以错误的顺序包含头文件,则无论如何都会有错误的值)。

因为有两个不同的最大值,下面的代码工作得更好

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
}

因为有两个不同的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
}

也许你可以使用这个代码

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

也许你可以使用这个代码

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

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


您需要的是全局变量()。

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


您需要的是全局变量()。

听起来您不需要常数,嗯?这里只是想检查一下,这听起来像是一个编译错误,而不是运行程序时会出现的错误:)#define是一个预处理器命令。在编译时的预处理过程中,代码中的所有MAX实例都将替换为100。看起来你想要一个类似于全局变量的东西,或者需要定义更多的常量。也许你可以详细说明你想要实现什么,然后答案可以更详细、更切题。我想写一个程序,其中MAX是数组b的维数。在主程序中,我们被要求给出维数(设为d)。但是在函数中,我用b进行了一些计算,其中维数仍然是MAX,所以我想用d替换MAX,这样我就不必用维数MAX对整个数组进行所有这些计算,当我只需要维数为d的数组时,听起来你不想要常数,嗯?事实上,在这里检查一下,这听起来像是一个编译错误,而不是运行程序时会出现的错误:)#define是一个预处理器命令。在编译时的预处理过程中,代码中的所有MAX实例都将替换为100。看起来你想要一个类似于全局变量的东西,或者需要定义更多的常量。也许你可以详细说明你想要实现什么,然后答案可以更详细、更切题。我想写一个程序,其中MAX是数组b的维数。在主程序中,我们被要求给出维数(设为d)。但是在函数中,我用b进行了一些计算,其中维数仍然是MAX,所以我想用d替换MAX,这样我就不必在整个数组上用维数MAX进行所有这些计算,而我只需要维数为d的数组。。