1. # 与##的区别
1.1. #宏定义时转变参数为字符串
e.g.1: #define STR(str) #str char *mystr = STR(test); printf("%s",mystr); result: "test" e.g.2: #define STR(str) #str char *myits =STR(1024); printf("%s",myits); result: "1024" e.g.3: #define STR(str) #str #define SIZE 1024 char *myint =STR(SIZE); printf("%s",myint); result: "SIZE" //此处输出式SIZE 因为SIZE是一个宏,不会再展开 e.g.4: #define _STR(str) #str #define STR(str) _STR(str) #define SIZE 1024 char *myint =STR(SIZE); printf("%s",myint); result: "1024" //增加了中间层,可以正确转换