2019独角兽企业重金招聘Python工程师标准>>>
#define A(x) T_##x ##连接
#define B(x) #@x #@单引号
#define C(x) #x #双引号
我们假设:x=1,则有:
A(1)------〉T_1
B(1)------〉'1'
C(1)------〉"1"
#define FOREACH_DAT_ID(GENERATE_DAT_ID) \
GENERATE_DAT_ID(DAT_ID_START) \
GENERATE_DAT_ID(DAT_ID_AUTO_DIFF) \
GENERATE_DAT_ID(DAT_ID_CMR) \
GENERATE_DAT_ID(DAT_ID_CMR2) \
GENERATE_DAT_ID(DAT_ID_SCMR) \
GENERATE_DAT_ID(DAT_ID_RTCM) \
GENERATE_DAT_ID(DAT_ID_RTCMV3) \
GENERATE_DAT_ID(DAT_ID_RTCMV32) \
GENERATE_DAT_ID(DAT_ID_RTD) \
GENERATE_DAT_ID(DAT_ID_RTCA) \
GENERATE_DAT_ID(DAT_ID_NOVATELX)
#define GENERATE_ENUM(a) a,
typedef enum
{
FOREACH_DAT_ID(GENERATE_ENUM)
} DAT_ID;
typedef struct
{
DAT_ID dat_id;
} CGI_TO_MNG_CMD_DATA__GET_GNSS_DATA;
int main()
{
CGI_TO_MNG_CMD_DATA__GET_GNSS_DATA pstCgiGetGnssData;
pstCgiGetGnssData.dat_id = DAT_ID_CMR;
printf("id:%d\n", pstCgiGetGnssData.dat_id);
system("pause");
}
其中#define GENERATE_ENUM(a) a, 每当调用GENERATE_ENUM(a)表示a, 后面有个逗号。
这样在枚举类型中可以秀一下。