1 #include<stdlib.h> 2 #include<stdio.h> 3 void log() 4 { 5 printf("Log [Line:%d]\n",__LINE__); 6 } 7 int main() 8 { 9 log(); 10 log(); 11 }@H_403_3@ 预期的结果是记录[行:9]记录[行:10]但事实是记录[行:5]记录[行:5] 毫不奇怪,LINE在预处理阶段被取代为5.我的问题是,如何设计日志功能以获得预期的结果?谢谢!
预期的结果是记录[行:9]记录[行:10]但事实是记录[行:5]记录[行:5]
毫不奇怪,LINE在预处理阶段被取代为5.我的问题是,如何设计日志功能以获得预期的结果?谢谢!
#define LOG printf("Log [Line:%d]\n",__LINE__)@H_403_3@ 然后使用它: int main() { LOG; LOG; }@H_403_3@ 这是有效的,因为宏在其使用点扩展,为__LINE__宏提供正确的值.
然后使用它:
int main() { LOG; LOG; }@H_403_3@ 这是有效的,因为宏在其使用点扩展,为__LINE__宏提供正确的值.
这是有效的,因为宏在其使用点扩展,为__LINE__宏提供正确的值.