关于宏定义
我想通过__LINE__表示不同的行号来定义不同的系统时间变量用以不同地方的打印时间,如下:
C/C++code
#defineLINE__ __LINE__ #define LINE(sys) sys##LINE__ SYSTEMTIME LINE(sys);GetLocalTime(&LINE(sys)); printf( "M/d/d d:d:d.d星期\n",LINE(sys).wYear,LINE(sys).wMonth,LINE(sys).wDay,LINE(sys).wHour,LINE(sys).wMinute,LINE(sys).wSecond,LINE(sys).wMilliseconds,LINE(sys).wDayOfWeek);#endif
编译发现__LINE__并不会被先替换成行号,而且多出定义会出现重复定义的错误,直接用#define LINE(sys)sys##__LINE__也会出错,更直接的在定义的时候:SYSTEMTIMEsys##__LINE__;来定义,错误更离谱。这是为什么呢?