宏定义中的#和##
(1)#将字符变为字符串
#define f(x) x ,在程序中调用a = f(1),相当于a = 1;
#defint f(x) #x ,在程序中调用 a = f(1),相当于 a = "1",a是一个字符串
(2)##可以进行宏参数拼接
#define f(x,y) ma##x##y
在程序中调用a = f(i,n) ,相当a = main;
宏定义 __DATE__ __TIME__
(1)例如:puts(""__DATE__"");
输出设备显示最后编译的年月日;