文件名和行信息
在预处理器中更改源代码的行号,以及可选的当前文件名。
语法
1 | #line | 行号 | ||
2 | #line | 行号 | "文件名" |
解释
- 将当前的预处理器行号更改为 行号。从这一点开始的宏 __LINE__ 的展开将展开为 行号 加上遇到的实际源代码行数。
- 还会将当前预处理器文件名更改为 文件名。从此点开始的宏 __FILE__ 的展开将生成 文件名。
允许使用任何预处理器标记(宏常量或表达式)作为参数给
如果 行号 为 0 或大于 32767 (C++11 之前) 2147483647 (C++11 起),行为是未定义的。
备注
此指令用于一些自动代码生成工具,这些工具从另一种语言编写的文件生成 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++23 标准 (ISO/IEC 14882:2023)
- 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]