c - 内联函数

标签 c optimization inlining

我正在 Linux 中使用 gcc 进行 C 开发。

我按以下方式组织 .H 和 .C 文件中的小函数

      // .H file
      extern int my_function( int val );

      // .C file
      inline int my_function( int val ){
          // my job..very short!
      }

这些函数很小,因此非常适合内联,但我不知道它们是否一定会内联。

我对组织文件的方式有疑问,并且我认为将所有函数直接内联到 .h 文件中而不是 .C 文件中可能会更好。 你能帮我澄清一下我的疑问吗?

最佳答案

首先,请注意,您可以告诉 gcc 通过添加 -finline-functions 选项来尝试将小函数内联到其调用者中。

如果您对函数实际上会内联有任何疑问,您可以使用 -Winline 要求 gcc 警告您有关不可内联的函数

在这里,由于您的函数同时声明为 externinline,因此它们内联为 inline定义仅用于内联。在这种特殊情况下,该函数根本不会自行编译。

阅读http://gcc.gnu.org/onlinedocs/gcc/Inline.html了解更多详情。

关于c - 内联函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946418/

相关文章:

delphi - 为什么Delphi编译器不内联汇编函数?

javascript - 评级明星列表的好关键 Prop

mysql - 最佳观看次数策略

c++函数指针内联

c - typedef 函数指针类型

PostgreSQL Set-Returning 函数调用优化

c++ - C/C++编译器可以以任何方式内联C回调函数吗?

python - 用 ctypes 替换共享库中的函数指针

c - C 中 *((volatile UINT32*)(a)) 的含义

c++ - 稀疏建模软件编译错误