2012-11-20 36 views
10

我今天從Ubuntu 12.04升級到了Ubuntu 12.10,我覺得它有g ++ -4.6,g ++ -4.7.2。在我的代碼中,我有幾個功能標記爲__attribute__((always_inline))。其原因只是簡介表明它顯着提高了代碼的性能。它工作正常使用g ++ 4.6,但現在使用g ++ 4.7我得到錯誤信息:內聯失敗:函數體可以在鏈接時被覆蓋

error: inlining failed in call to always_inline 'void func_name(args)': function body can be overwritten at link time

我不能分享我的實際代碼,我試着將它縮小,但是當我改變太多的錯誤去離開,所以這沒有幫助。我對此錯誤消息的根本原因感興趣。

回答

14

我並不打算自己回答這個問題,但是在我發佈後幾分鐘,我意外地找到了答案。

此(神祕)錯誤消息的原因是該功能未被標記爲inline,只有__attribute((always_inline))