如何使用 GCC 编译具有文字属性的内联 C 函数



我有一个这样的inline函数:

inline void func_1 (int a)
{
   if(a==1)
   {
      other_func1();
   }
   else
   {
      other_func2();
   }
}

我在主中使用如下:

 int main()
 {
     func1(1);
     func1(42);
     return 0;
 }

我使用 GCC,我认为编译后的代码如下所示(在"源代码级别"中):

 int main()
 {
     other_func1()
     other_func2();
     return 0;
 }

是真的还是我错了?

是的,一般来说,当 gcc 可以在编译时计算分支时,它会优化内联函数中的死代码。我经常使用这种结构来允许为不同的用例生成优化的代码 - 有点像C++中的模板实例化。

相关内容

  • 没有找到相关文章

最新更新