【发布时间】:2018-05-12 23:02:34
【问题描述】:
我阅读了有关使用 Cppreference 的宏。
__LINE__:扩展为源文件行号,整数常量,可以通过
#line指令改变
我制作了 c++ 程序来测试__LINE__ 宏。
#include <iostream>
using namespace std;
#line 10
#define L __LINE__
int main()
{
#line 20
int i = L;
cout<<i<<endl;
return 0;
}
输出:
20
为什么上面代码的输出是20?为什么不是10?
【问题讨论】:
-
TL;DR:宏在定义时不会展开。每次使用它的时间(和地点)都会扩展。
-
@lockcmpxchg8b - 这是一个糟糕的 TL;DR。我认为 OP 的困惑在于,至少从表面上看,
#define L __LINE__uses__LINE__.