Ernie Mur
Ernie Mur

Reputation: 571

count #define or const variables at compile time

In C++, I have some #define and also a count like this:

#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
        );

Now, I want to use it like this, which does not work as const variable cannot be used in a #if preprocessor statement:

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

One way to solve it would be to make some extra defines like this:

#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

Is there a more elegant solution, maybe by using NUM_USE from above?

Upvotes: 0

Views: 146

Answers (1)

Daniel
Daniel

Reputation: 31579

You can define the USEs to be either 1 or 0 and then the sum can be a simple macro:

#define USE_1 1
#define USE_2 0
#define USE_3 1

#define NUM_USE (USE_1 + USE_2 + USE_3)

Upvotes: 2

Related Questions