2013-05-04 152 views
3

我被检查由GCC生成的预处理输出,我看到在我生成使用-save-temps标志.i文件很多这样的:调试信息

# 8 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4 

之前什么号码以及stubs.h的绝对路径是什么意思?它似乎是由预处理器插入的某种调试信息,并允许编译器发出引用此信息的错误消息。这些行不影响程序本身,但每个数字具体是什么?

回答

5

基于the documentation之前的文件名是行号。在文件名后的数字是一个标志和含义如下:

  • 1表示新文件的开始。
  • 2表示返回到文件(包含另一个文件后)。
  • 3表示以下文本来自系统头文件,因此应该抑制某些警告。
  • 4表示应将以下文本视为隐藏在隐式外部“C”块中。
+0

和它表示什么行号,因为我看到许多文件包含在相同的行号......我错过了一些明显的东西在这里? – ArunMKumar 2013-05-04 13:02:11

+0

'#1“/usr/include/stdio.h”1 3 4','#28“/usr/include/stdio.h”3 4','#1“/usr/include/features.h”1 3 4','#324“/usr/include/features.h”3 4' – ArunMKumar 2013-05-04 13:02:29

+0

@ArunKumar根据你的标志,这只是表明一个新的文件被打开 – 2013-05-04 14:08:58