(这也是问题)
假设我有2个文件,g1.cpp
,df.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设置新值?
答案 0 :(得分:4)
宏不是变量。在编译时,宏会在早期阶段转换代码,使代码看起来像这样:
#define EP1 4000
int xp = EP1;
EP1 = 30;
转化为:
int xp = 4000;
4000 = 30;
我希望很明显为什么第二个赋值没有意义(并产生你看到的错误)。
听起来你想要使用一个变量。
答案 1 :(得分:4)
答案 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;