cusemacroNameasvariablename
I have a macro defined like this:
#define Test_Flag 1
后来我想在一个结构中定义一个名称相同的元素:
struct adress{
char name;
char Test_Flag;
};
struct Adress = {0,1}
我已经尝试了以下方法:
struct adress{
char name;
char Test_##Flag;
};
有没有办法得到这个作品?
回答
您可以使用#undef删除宏的定义:
#define Test_Flag 1
... Other code that uses Test_Flag.
#undef Test_Flag
struct address
{
char name;
char Test_Flag;
}
或者您可以使用枚举常量而不是宏:
enum { Test_Flag = 1 };
struct address
{
char name;
char Test_Flag;
}
C 的结构成员名称空间与枚举常量等其他标识符的名称空间不同,因此它们不会相互干扰。