#define

#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,     后面有个逗号。

这样在枚举类型中可以秀一下。 
 

猜你喜欢

转载自my.oschina.net/u/2252538/blog/1574597
今日推荐