繁体   English   中英

C预处理文件中有哪些不熟悉的行?

[英]What are these unfamiliar lines in the C preprocessed file?

这是C中Hello World程序中GNU cpp的输出。我想知道这些行是什么意思? #Number Header_File_Location [Numbers]

# 1 "hello.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "hello.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 374 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
# 385 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 386 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
# 375 "/usr/include/features.h" 2 3 4
# 398 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4
# 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4
# 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4
# 399 "/usr/include/features.h" 2 3 4
# 28 "/usr/include/stdio.h" 2 3 4





# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 1 3 4
# 212 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 34 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4
# 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;

这些依赖是什么? 如果是,那么什么? 行号?

来自gcc 文档

源文件名和行号信息由表单行传达

  # linenum filename flags 

这些被称为线性标记。 它们根据需要插入到输出中(但从不在字符串或字符常量内)。 它们意味着以下行起源于line linenum的文件filename。 filename永远不会包含任何非打印字符; 它们被八进制转义序列取代。

文件名后面有零个或多个标志,分别是'1','2','3'或'4'。 如果有多个标志,则空格将它们分开。 这是标志的意思:

'1'这表示新文件的开始。

'2'表示返回文件(包含其他文件后)。

'3'这表示以下文本来自系统头文件,因此应禁止某些警告。

'4'这表示应将以下文本视为包含在隐式extern“C”块中。

这些是行号指令 ,并告诉编译器翻译单元中源的下一部分来自哪个行和文件。

这就是编译器在预处理后报告包含的头文件中的错误的方式。

暂无
暂无

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

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