关于为变量设置新值

时间:2014-08-25 02:16:34

标签: c++ c

(这也是问题)
假设我有2个文件,g1.cppdf.h(作为标题)。

df.h包含名为EP1的变量:

#define EP1     400


并且g1.cpp包含df.h个文件。
.................................................. ..........

让我们尝试设置/获取EP1值(g1.cpp


现在,如果我将尝试获得EP1值,它将无任何错误地工作:
int xp = EP1;(xp = 400)

但当我试图为EP1设定新值时:
EP1 = 10000;

有一个例外:

error: lvalue required as left operand of assignment (MinGW的)


我的问题是: 如何为EP1设置新值?

4 个答案:

答案 0 :(得分:4)

宏不是变量。在编译时,宏会在早期阶段转换代码,使代码看起来像这样:

#define EP1 4000
int xp = EP1;
EP1 = 30;

转化为:

int xp = 4000;
4000 = 30;

我希望很明显为什么第二个赋值没有意义(并产生你看到的错误)。

听起来你想要使用一个变量。

答案 1 :(得分:4)

  

我的问题是:如何为EP1设置新值?

#undef EP1
#define EP1 10000

EP1不是变量,而是macro

答案 2 :(得分:1)

    int main(int argc, char** argv)
    {
        int i = VAL; //VAL is the macro defined in the header file
        std::cout<<i<<std::endl;
        #undef VAL   
        #define VAL 1000 //defining the macro with a new value
        i = VAL;
        std::cout<<i<<std::endl;
    }

答案 3 :(得分:0)

要使EP1 == 10000(或您想要将其更改为的任何数字)

#undef EP1
#define EP1 10000 // or some other value

顺便说一下,为什么不将EP1定义为变量?

int EP1 = 40000; 

您可以在头文件中定义为全局:

extern int EP1;