2016-05-23 77 views
4

我的問題如下。我正在嘗試爲mips創建一個項目。 當我從它的庫下載它,是沒有問題的建築,但是當我建造它時,它是一個更大的項目的一部分,我收到了如下因素的錯誤:gcc標誌強制使用預定義的宏

error: expected ‘,’ or ‘...’ before numeric constant

我發現它是一個問題,因爲某些變量稱爲mips,而相同的變量在gcc編譯器中被定義爲預定義的宏。

#define mips 1 

我驗證它:

mipsel-linux-gnu-g++ -dM -E - < /dev/null

所以,我的問題是,是否有任何身體知道是有一定的編譯器標誌或什麼的,強制使用這個宏的?奇怪的是,當我從存儲庫下載相同的代碼時,沒有構建問題。

這兩個項目都使用相同的工具鏈構建,我已經驗證過。

感謝您的幫助!

+0

當代碼始終認爲它正在編譯爲mips時,不會強制定義「mips」可能會有意想不到的副作用?無論如何,我檢查並且'-dM -E'在我的系統中列出了宏'unix'和'linux',但是當我編譯一個程序時它們沒有被定義。我建議您檢查是否沒有定義宏的頭文件,並且它沒有被定義爲編譯器參數。 – user2079303

+0

我不強迫任何事情,我只是想知道爲什麼會發生這種情況。當你檢查mips工具鏈時,#define mips 1存在。由於某些標誌或某些事情的緣故,我在代碼中遇到了一個問題,我稱之爲mips。編譯器報告我發佈的錯誤。我只想知道是否有任何標誌可以抑制這種定義或強制它。 – Shakal187

+0

啊,如果你只是爲了調試編譯而使用它,那麼這不是問題。 MSalters似乎知道答案。我從來沒有編譯過'-ansi'或任何非官方的'-std',這解釋了我的測試結果,也可能是你的。 – user2079303

回答

3
+0

謝謝!這是正確的答案。 mips未被壓縮的項目使用std = gnu ++ 11。我知道這些選項有些東西,但我不知道如何搜索它。再次感謝。 – Shakal187