2015-09-09 40 views
0

我有一個使用「.global」彙編語言代碼的「c」程序。我的編譯器不允許這個,我需要忽略一樣,我試過如下:「.global」的宏定義

#define .global //global 

但是,這給出了一個編譯器錯誤。有沒有其他的選擇,我可以使用。編譯錯誤是:

「預期標識符」

+5

你使用什麼編譯器?你能向我們展示一個這種用法的例子嗎? – RedX

+1

字面文字'.global'出現在C源文件中? – Potatoswatter

+0

「.global _vsf_getps;」這是如何使用它,我使用一個內部編譯器,它不支持這種構造,所以在編譯時需要忽略這一點,而不改變代碼。 –

回答

0

你幾乎肯定會最終編寫自己的腳本預處理;如果你的源文件被合理控制,它應該不會太難。如果你不使用字符串文字或評論.global結構,例如,這將是足夠的做一些事情,如:

sed 's/.global [_[:alpha:]][_[:alnum:]]*;//g' 

(也許更多的注重細節大約空格)。


您無法使用宏製作評論。 (您也不能定義名稱以.開頭的宏,儘管我認爲可能有編譯器將其作爲擴展接受。)

註釋在翻譯過程的階段3中被替換爲空白。預處理器指令直到第4階段才被檢查,此時所有評論都消失了。

所以有

#define COMMENT //comment 
#define COMMENT 

標準參考之間沒有差異:§ 5.1.1.2/1:

  • 源文件被分解成預處理令牌7)和空白字符序列(包括註釋)。源文件不應以部分預處理令牌或部分註釋結束。每個評論都被一個空格字符替代。…

  • 執行預處理指令,展開宏調用,並執行一元運算符表達式_Pragma…