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