2013-05-04 154 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