文件名和行信息

来自cppreference.com
 
 
C++ 语言
 
 

在预处理器中更改当前行号和文件名。

目录

[编辑] 语法

#line 行号 (1)
#line 行号 "文件名" (2)

[编辑] 解释

1) 更改当前预处理器行号为 行号 。从此点开始,宏 __LINE__ 的出现会展开成 行号 加上自此遇到的实际代码行数。

2) 亦将当前预处理器文件名更改为 文件名 。此点后宏 __FILE__ 的每次出现将生成 文件名

任何预处理器记号(宏常量及表达式)都允许作为 #line 的参数出现,只要它们展开成合法的十进制整数,可以后随一个合法的字符串。

[编辑] 注意

一些自动代码生成工具从以其他语言书写的文件产生 C++ 源文件,它们会使用此指令。该情况下,它们可能插入引用原始(人类可读)源文件的行号和文件名的 #line 指令到生成的 C++ 文件中。

[编辑] 示例

#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.

[编辑] 参阅

文件名和行信息C 文档