#define A(x) T_##x ##链接
#define B(x) #@x #@单引号code
#define C(x) #x #双引号
咱们假设:x=1,则有:
A(1)------〉T_1
B(1)------〉'1'
C(1)------〉"1"get
#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, 后面有个逗号。class
这样在枚举类型中能够秀一下。
mail