我使用打印出 C 预处理器的输出
gcc -E a.c
输出包含很多行,如
# 1 "a.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "a.c"
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3
# 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3
# 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3
我从未在 C 语言中见过这种语法。谁能解释一下这是做什么的?
最佳答案
这些行是调试提示(该行后面的代码实际来自哪里)
# line-number "source-file" [flags]
标志的含义(空格分隔):
- 1 - 新文件的开始
- 2 - 返回上一个文件
- 3 - 以下文本来自系统头文件(#include <> vs #include "")
- 4 - 以下文本应被视为包含在隐式外部“C” block 中。
关于c - gcc 预处理器输出中以哈希符号和数字(如 '# 1 "a.c"')开头的行的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370539/