count#在编译时定义或常量变量



在C++中,我有一些#define和一个类似的计数:

#define USE_1
#undef USE_2
#define USE_3
const size_t NUM_USE = (
0
#ifdef USE_1
+ 1
#endif
#ifdef USE_2
+ 1
#endif
#ifdef USE_3
+ 1
#endif
);

现在,我想这样使用它,它不起作用,因为const变量不能在#if预处理器语句中使用:

#if NUM_USE > 0
// define here some specific code
#endif

解决这个问题的一种方法是做一些额外的定义,比如:

#ifdef USE_1 
#define HAVE_ANY_USE
#else
#ifdef USE_2
#define HAVE_ANY_USE
#else
#ifdef USE_3
#define HAVE_ANY_USE
#endif
#endif
#endif
#ifdef HAVE_ANY_USE
// define here some specific code
#endif

有没有更优雅的解决方案,也许可以使用上面的NUM_USE?

您可以将USE定义为1或0,然后总和可以是一个简单的宏:

#define USE_1 1
#define USE_2 0
#define USE_3 1
#define NUM_USE (USE_1 + USE_2 + USE_3)

最新更新