同时使用 __attribute__ ((pure)) 和静态内联是否有任何好处?

Does it provide any benefits to simultaneously use __attribute__ ((pure)) and static inline?

我正在优化一个 c 程序,我想知道在同一个函数声明中使用 __attribute__ ((pure))static inline 是否有意义?

所有三个属性相互正交:

  • static 表示该函数不在编译单元之外使用,因此不会被导出,也不会污染外部命名空间
  • inline 增加函数被内联的机会
  • pure 告诉编译器该函数没有副作用,因此如果内联失败,编译器仍然能够更积极地优化围绕函数调用的代码

所以none个是另一个的替代品,应该同时使用。