文件名和行号信息
来自cppreference.com
< cpp | preprocessor
改变预处理器中的当前文件名和行号。
目录 |
[编辑] 语法
#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 文档
|