我有一个问题,因为下面的代码描述了自己.
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 }
预期的结果是
记录[行:9]
记录[行:10]
但事实是
记录[行:5]
记录[行:5]
毫不奇怪,LINE在预处理阶段被取代为5.
我的问题是,如何设计日志功能以获得预期的结果?
谢谢!
解决方法
你需要写一个宏:
#define LOG printf("Log [Line:%d]\n",__LINE__)
然后使用它:
int main() { LOG; LOG; }
这是有效的,因为宏在其使用点扩展,为__LINE__宏提供正确的值.