2013-07-01 48 views
0

如何更改gcc的預處理器(cc1.exe)輸出格式爲:如何更改GCC預處理器輸出格式?

#line 1 "path/to/file.c" 

目前,我得到這個格式:

# 1 "path/to/file.c" 

報告還指出here輸出是一個#line指令,但我得到了不同的輸出格式。是否有我需要使用的參數選項?

+0

'cc1'是C前端,不只是預處理器(我認爲處理集成到前端)。通常預處理器輸出只是直接送到編譯器的其餘部分。你爲什麼需要改變它? –

+0

爲我自己說,我想這樣做,因爲我想預處理輸入到'yacc';但'yacc'只能理解'#line'指令,而不是'#'指令。 –

回答

0

最簡單的答案,只需編寫一個腳本來處理由gcc預處理器生成的文件,以滿足您的需求。

  1. 編寫自己的腳本,內搭GCC預處理器作爲輸入的輸出,並更換# 1#line 1,命名爲myscript
  2. 編寫腳本以自動調用GCC預處理,然後調用腳本myscript
  3. 將步驟2中的上述腳本命名爲 - gcc,將它放在本地PATH中。
+0

其實,我一直在尋找更簡單的東西,比如添加一個參數選項。 –

0

按照GCC docs

源文件名和行號信息由形式

# linenum filename flags 

這些被稱爲linemarkers的線輸送。它們根據需要插入到輸出中(但從不在字符串或字符常量內)。它們表示以下行起源於文件文件名在行linenum

您引用的來源是關於預處理器輸入,而不是輸出。 (GCC也接受上述格式作爲輸入,但它不可互操作。)