文件名和行号信息

改变预处理器中的当前文件名和行号。

目录

语法

#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 文档

版本历史

  • (当前 | 先前 2017年1月23日 (一) 23:27Lynnboy讨论 | 贡献. . (1,690字节) (-830). . (撤销)
  • 当前 | 先前 2014年10月26日 (日) 18:59P12bot讨论 | 贡献 . . (2,520字节) (0). . (Fix some translations) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 10:29P12bot讨论 | 贡献 . . (2,520字节) (-52). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 13:58P12bot讨论 | 贡献 . . (2,572字节) (+87). . (r2.7.3) (机器人添加:en, es, it, ru 去除:zh) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 10:05P12讨论 | 贡献 . . (2,485字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 07:00TranslationBot讨论 | 贡献. . (2,485字节) (-42). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 16:32P12讨论 | 贡献 . . (2,527字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 13:00TranslationBot讨论 | 贡献. . (2,527字节) (+1,906). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年5月4日 (五) 17:21P12bot讨论 | 贡献 . . (621字节) (+175). . (r2.7.3) (机器人添加:cs, de, en, fr, ja, pt) (撤销)
  • 当前 | 先前 2012年5月1日 (二) 04:37P12讨论 | 贡献 . . (446字节) (0). . (1个修订: Import from Dokuwiki) (撤销)
  • 当前 | 先前) 2012年5月1日 (二) 04:37P12讨论 | 贡献. . (446字节) (+446). . (Import from dokuwiki)