内联失败:在链接时可以覆盖函数体

Yex*_*exo 13 c++ g++

我今天升级了Ubuntu 12.04,我认为g ++ - 4.6到Ubuntu 12.10,g ++ - 4.7.2.在我的代码中,我有一些标记为的函数__attribute__((always_inline)).这样做的原因很简单,分析表明我显着提高了代码的性能.它适用于g ++ 4.6但现在使用g ++ 4.7我收到错误消息:

错误:内联调用always_inline'void func_name(args)'时内联失败:函数体可以在链接时被覆盖

我不能分享我的实际代码,我试图缩小它,但是当我改变太多时,错误消失了,所以这没有用.我对此错误消息的根本原因感兴趣.

Yex*_*exo 16

我不打算自己回答这个问题,但在发布后几分钟我意外地找到了答案.

此(隐藏)错误消息的原因是该功能未被标记为inline__attribute((always_inline)).

  • 我没有替换它,除了“__attribute((always_inline))”之外,我还添加了“inline” (2认同)