根据#defined数定义不同的长度枚举

时间:2016-03-24 22:34:05

标签: c++ enums

假设我有

#define l 4

我想要一个类似于以下内容的枚举

enum Biscuits{
b1, b2, b3, b4
}

换句话说,饼干的长度取决于l是多少。我能想到的唯一方法是创建另一个包含b1,b2,b3,b4的#defined变量,然后用它来定义Biscuits。还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

保持简单(除非你有很多变化):

#if l == 1
enum Biscuits{ b1 };
#elif l == 2
enum Biscuits{ b1, b2 };
#elif ...
#endif

避免预处理器魔法提高了可读性。

答案 1 :(得分:0)

我不知道您希望代码有多灵活。我建议使用:

enum Biscuits{

#ifndef l
#error l is not defined
#else
#if (l >= 2 )
   b1, b2
#endif

#if (l >= 4 )
   , b3, b4
#endif

#if (l >= 6 )
   , b5, b6
#endif

#if (l >= 8 )
   , b7, b8
#endif

#endif

};