2012-08-17 70 views
1

如果函數定義不可用,並且只有函數原型出現在頭文件中,那麼g ++編譯器不會給出任何錯誤。但在鏈接過程中,g ++鏈接器將識別錯誤並將「未定義的引用」指向相應的fn。我不在乎定義。我只是想獲得二進制圖像,每當相應的fn從該圖像調用,那麼只有我想崩潰。我可以知道鏈接器標誌來壓制這個「未定義的引用」鏈接器錯誤嗎?在VC++中,有一個叫/ FORCE的選項。有沒有類似的標誌?如何避免g ++鏈接器錯誤「undefined reference」

+0

對於未定義的符號而言,您預期會發生什麼? – Flexo 2012-08-17 11:14:09

+0

感謝您的關注。如果函數以外的符號顯示相同的弱符號行爲,那將是非常好的。但它不是強制性的。 – siva 2012-08-22 06:25:42

回答

1

這是完全不確定的行爲,但如果你想有一個崩潰...

如果你有一個未定義的符號,如功能void h()那麼它的名字將是_Z1hv,所以如果你定義一個符號,名稱和外部鏈接就會發現,即使類型錯誤:

int _Z1hv = 0; 
void h(); 

int main() 
{ 
    h(); 
} 

這將鏈接,但在運行時墜毀因爲調用h()將嘗試「運行」功能在整數的地址變量。

這樣做是錯誤的,噁心和殺死小貓。

+0

感謝您的關注。我的事情,你以一種錯誤的方式理解我的懷疑。我正在尋找gcc/g ++鏈接器標誌來抑制錯誤「未定義的參考」。 – siva 2012-08-30 15:53:44

+0

你沒有一個「懷疑」你有問題。 「懷疑」並不意味着同樣的事情。無論如何,沒有這樣的可執行文件的選項。 – 2012-09-09 22:04:15

相關問題