我正在编写用于嵌入式使用的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>
请注意“让编译器控制不可用性”不是一个可以接受的答案 - 谈话正是关于明确控制它。