#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