我必须生成一个仅在特定条件下包含特定字段的数据结构。这通常总是转化为如下内容
struct MyStruct {
int alwaysHere;
#ifdef WHATEVER
bool mightBeHere;
#endif
char somethingElse;
#if SOME_CONSTANT > SOME_VALUE
uint8_t alywasHereButDifferentSize;
#else
uint16_t alywasHereButDifferentSize;
#endif
...
};
从我的角度来看,这很容易看起来很难看,而且不可读。甚至不用谈论处理这些字段的代码,通常也是在 ifdefs 下。
我正在寻找一种优雅的方式来实现相同的结果,而不增加任何开销,但代码更具可读性。模板专业化似乎有点过分,但在我看来它是唯一的选择。
C++11 是否添加了任何东西来处理这种情况?
任何建议将不胜感激。