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 的结构成员名称空间与枚举常量等其他标识符的名称空间不同,因此它们不会相互干扰。


以上是cusemacroNameasvariablename的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>