我有一个问题,如下代码所述。
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。
我的问题是,如何设计日志函数以获得期望的结果?
谢谢!
__LINE__
宏)在编译器看到代码之前发生。 - anon__LINE__
是一个预处理器宏,在预处理期间进行替换,而不是在函数内联期间进行替换。(编辑:被忍者打败了) - AshleysBrain