在每次调用的基础上控制函数内联能力

时间:2013-06-18 20:38:01

标签: c++ inline

我正在编写用于嵌入式使用的C ++库,因此它必须是高效的; 2)由于“高效”不能简化为静态约束集,所以程序员可以根据具体情况控制代码速度与大小的权衡。为了满足这种需求,我考虑让程序员控制大量方法的内联能力。我可以想到以下模式:

class Foo {
  ALWAY_INLINE void foo_i() { ... }
  NEVER_INLINE void foo_ni() { foo_i(); }
#if DEFAULT_INLINE
  ALWAY_INLINE void foo() { foo_i(); }
#else
  NEVER_INLINE void foo() { foo_i(); }
#endif
}

这里,ALWAY_INLINE / NEVER_INLINE是针对编译器特定属性的定义(我很乐意只针对gcc)。并且这个方案给出了一个方法的3个版本:一个将始终内联,一个永远不会内联,一个“主”方法具有“默认”内在性(基于我作为图书馆作者的决定)。

现在,我不是100%肯定这样的方案,特别是关于_i / _ni后缀和冗长(后者可以用宏来处理,但这可能导致比后缀更加模糊)。

我想知道,如果有任何一种最佳实践来处理C ++中的元编程问题,或至少现有的例子如何在其他库中处理它?<​​/ p>

请注意“让编译器控制不可用性”不是一个可以接受的答案 - 谈话正是关于明确控制它。

0 个答案:

没有答案