在线文档教程
C++
语言 | Language

#line directive

文件名和行信息

更改预处理程序中的当前文件名和编号。

句法

#line lineno(1)
#line lineno "filename"(2)

解释

1%29将当前预处理程序行号更改为lineno。宏的扩展__LINE__除此之外,还将扩展到lineno,再加上此后遇到的实际源代码行数。

2%29还将当前的预处理器文件名更改为文件名。宏的扩展__FILE__从这一点起将产生文件名。

任何预处理令牌%28宏常量或表达式%29允许作为参数#line只要它们展开为有效的十进制整数,就可以选择跟随有效的字符串。

注记

这个指令被一些自动代码生成工具使用,它们从用另一种语言编写的文件中生成C++源文件。在这种情况下,#line指令可以插入生成的C++文件中,引用行号和原始%28可编辑%29源文件的文件名。

二次

#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5 }

二次

产出:

二次

test: test.cc:777: int main(): Assertion `2+2 == 5' failed.

二次

另见

文件名和行信息的文档

*。

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/preProcessor/line