繁体   English   中英

C语言中#line的含义是什么?

[英]What's the meaning of #line in C language?

C语言中#line的含义是什么? 它会在哪里使用?

它告诉编译器实际来自以下行的位置。 通常只有C预处理器添加这些,例如,当包含文件时,它告诉编译器(基本上只看到一个数据流)我们正在查看不同的文件。

这可能听起来很奇怪,但是预处理器只是在您指定包含的地方插入头文件,并且编译器可以处理整个事物(所有头文件与源代码连接在一起),如果使用,您可以检查预处理器阶段的结果gcc与gcc -E myfile.c 在那里你会注意到它会在你包含文件时添加一个#line指令,并且每当它减少了输入到编译器的文本量时(例如大量的注释可以减少到单个#line指令,跳过前面)

它也被其他程序使用,比如bison / yacc告诉你问题(如果有编译问题)与你在特定行的规则文件有关,否则编译器将无法做到这一点,因为bison / yacc生成c文件。

它被称为预处理器行控制指令

如果使用#line指令,则会更改__FILE____LINE__的扩展。 它使编译器将下一个源行的行号视为指定的数字。

它的主要用途是使编译器提供更有意义的错误消息。

您可以在IBM的文档中找到更多解释和用法示例。

它是一个pragma关键字:

#line允许您修改编译器的行号和(可选)文件名输出以查找错误和警告。此示例显示如何报告与行号相关的两个警告。#line 200指令强制行号为200(尽管默认值是#7)并且直到下一个#line指令,文件名将被报告为“Special”。#line default指令将行编号返回到其默认编号,该编号计算由前一个指令重新编号的行。 “

它允许您更改文件的表观行号。

我能想到的唯一用途就是在一系列多行宏之后使行号保持正常。

用法是:

#line 42

它主要用于提供源文件的文件名和行号,从中创建C文件(标题或实现)。 鉴于此,编译器将发出暗示源文件而不是生成文件的诊断信息。

预处理器还使用它来提示已经扩展的预处理文件中的包含标头。

#是处理器c和c ++的符号字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM