小编Ana*_*and的帖子

使用##运算符创建宏

抱歉,我可能会重复之前提出的问题,但我没有得到我正在寻找的答案。所以这就是我想要创建的:

typedef struct flags
{
    unsigned char flag0:1;
    unsigned char flag1:1;
    unsigned char flag2:1;
    unsigned char flag3:1;
    unsigned char flag4:1;
    unsigned char flag5:1;
    unsigned char flag6:1;
    unsigned char flag7:1;
}BFLAG;

typedef union
{
    unsigned char byte;
    BFLAG  bitflg;
}GENFLAG;

GENFLAG status_flag, hmi_flag;
Run Code Online (Sandbox Code Playgroud)

然后我想创建宏来寻址特定位,如下所示:

#define EDIT_PARAM      status_flag.bitflg.flag0    // l: Locked for editing, 0:Editable

#define HIDE_PARAM      status_flag.bitflg.flag1    // 1: parameter is hidden, 0:visible

#define LOCK_PARAM      hmi_flag.bitflg.flag0   // 1: Password Unlock, 0: locked 1.
Run Code Online (Sandbox Code Playgroud)

ETC。

因此,我希望能够在每个实例中使用 ## 运算符将“status_flag.bitflg.flag”等公共字符串与 0、1、2、3 等连接起来,创建一个新的宏。但我想使用宏,例如 EDIT_INDEX 代表 0,HIDE_INDEX …

c concatenation

2
推荐指数
1
解决办法
71
查看次数

标签 统计

c ×1

concatenation ×1