Cppreferenceを使ってマクロについて読んだことがあります。__LINE__マクロを置き換える
__LINE__:ソースファイルの行数、整数定数に展開され、Iマクロ
__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でないのですか?
[C DR 483](http://www.open-std.org/JTC1/SC22/WG14/www/docs/summary.htm#dr_483) – cpplearner
TL; DR:マクロは展開されません定義された。それが使用されるたびに(そしてどこで)展開されます。 – lockcmpxchg8b
@ lockcmpxchg8b - これは悪いTLです; DR。 OPの混乱は、少なくともそれに直面して、 '#define L __LINE__' *が*' __LINE__'を使用することです。 – StoryTeller