作为预处理运算符,可以把记号转化为字符串
举例:
#include#define INT_TO_STR(n) #n #define VERSION(major, minor) "V"INT_TO_STR(major)"."INT_TO_STR(minor) #define ENUM_TO_STR(e) (#e) typedef enum { USER_BUTTON_0 = 0, USER_BUTTON_1, USER_BUTTON_2, USER_BUTTON_3, USER_BUTTON_MAX } user_button_t; static char *enum_btn_id_string[] = { ENUM_TO_STR(USER_BUTTON_0), ENUM_TO_STR(USER_BUTTON_1), ENUM_TO_STR(USER_BUTTON_2), ENUM_TO_STR(USER_BUTTON_3), ENUM_TO_STR(USER_BUTTON_MAX), }; int main(void) { printf("VERISON is : %sn", VERSION(2, 1)); printf("user_button enum:n"); for (int i = 0; i < USER_BUTTON_MAX; i++) { printf("%sn", enum_btn_id_string[i]); } return 0; }



