在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)