#define A(x) T_##x ##连接
#define B(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, 后面有个逗号。
这样在枚举类型中可以秀一下。