Filename and line information
更改预处理程序中的源代码行号,并可选择更改当前文件名。
目录 |
语法
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
说明
1) 将当前预处理器行号更改为 lineno 。此后出现的 __LINE__ 宏展开结果将为 lineno 加上实际遇到的源代码行数。
2) 同时将当前预处理器文件名更改为 filename 。从此处开始的宏 __FILE__ 展开将生成 filename 。
任何预处理记号(宏常量或表达式)只要展开后形成有效的十进制整数(可选地后接有效字符串),都允许作为 #line 的参数。
lineno
必须是由至少一个十进制数字组成的序列(否则程序格式错误),且始终被解释为十进制数(即使以
0
开头)。
如果
lineno
为
0
或大于
32767
(C++11 前)
2147483647
(C++11 起)
,则行为未定义。
注释
该指令被某些自动代码生成工具使用,这些工具可从其他语言编写的文件生成C++源文件。在这种情况下,生成的C++文件中可能会插入引用原始(可人工编辑)源文件的行号和文件名的 #line 指令。
示例
#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++23 标准 (ISO/IEC 14882:2024):
-
- 15.7 行控制 [cpp.line]
- C++20 标准 (ISO/IEC 14882:2020):
-
- 15.7 行控制 [cpp.line]
- C++17 标准 (ISO/IEC 14882:2017):
-
- 19.4 行控制 [cpp.line]
- C++14 标准 (ISO/IEC 14882:2014):
-
- 16.4 行控制 [cpp.line]
- C++11 标准 (ISO/IEC 14882:2011):
-
- 16.4 行控制 [cpp.line]
- C++98 标准 (ISO/IEC 14882:1998):
-
- 16.4 行控制 [cpp.line]
参阅
|
(C++20)
|
表示源代码信息的类,如文件名、行号和函数名
(类) |
|
C 文档
for
文件名和行号信息
|
|