Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在C语言中#line的含义是什么?_C_C Preprocessor_Preprocessor Directive - Fatal编程技术网

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

什么';在C语言中#line的含义是什么?,c,c-preprocessor,preprocessor-directive,C,C Preprocessor,Preprocessor Directive,在C语言中,#line是什么意思?在哪里使用它?它被称为预处理器行控制指令 如果使用了#LINE指令,则(文件)和(行)的扩展都会被更改。 它使编译器将下一个源代码行的行号视为指定的行号 它的主要用途是使编译器提供更有意义的错误消息 您可以在中找到更多解释和用法示例。它允许您更改文件的外观行号 我能想到的唯一用途是在一长串多行宏之后使行号保持正常 用途是: #line 42 它告诉编译器下一行的实际来源。通常只有C预处理器添加这些,例如,当包含一个文件时,它会告诉编译器(基本上只看到一个数据流

C语言中,
#line
是什么意思?在哪里使用它?

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

如果使用了
#LINE
指令,则
(文件)
(行)
的扩展都会被更改。 它使编译器将下一个源代码行的行号视为指定的行号

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


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

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

我能想到的唯一用途是在一长串多行宏之后使行号保持正常

用途是:

#line 42

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

这听起来可能有点奇怪,但预处理器只是在指定包含的位置插入头文件,编译器就可以完成整个工作(所有头文件都与源代码连接在一起),如果使用gcc with
gcc-E myfile.c
,则可以检查预处理器阶段的结果。在这里,您会注意到每当您包含文件时,以及每当它减少输入到编译器的文本量时,它都会添加一个
#line
指令(例如大量注释可能会减少为一个
#line
指令,向前跳过)

其他程序(如bison/yacc)也使用它来告诉您问题(如果存在编译问题)与特定行的规则文件有关,否则编译器将无法执行此操作,因为bison/yacc生成c文件。

这是一个关键字:


#line允许您修改编译器的行号和(可选)文件名输出,以显示错误和警告。此示例显示如何报告与行号关联的两个警告。#line 200指令强制行号为200(尽管默认为#7)在下一个#line指令之前,文件名将被报告为“特殊”。该#line default指令将行号返回到其默认编号,这将统计由上一个指令重新编号的行。“

它主要用于提供源文件的文件名和行号,其中包含一个C文件(无论是头文件还是实现)已创建。因此,编译器将发出诊断提示,提示源文件而不是生成的文件


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

\p>是处理器c和c++

的字符串输入符号。
\line
以何种方式是pragma?@bk1e:虽然它在语法上不同,但其行为方式与
\pragma
相同,因为它也是一个编译器,而不仅仅是一个预处理器指令。预处理器不会删除它,编译器会对它进行解释以改变某些行为(在本例中,是错误报告、
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu行
)。要在windows系统上使用VisualStudio编译器us命令查看预处理器阶段的结果,
cl.exe/P myfile.c
这不是唯一的用法-您也可以将文件名指定为字符串。