Liste des Groupes | Revenir à cl c |
Il 13/03/2025 16:44, pozz ha scritto:
>Consider this code:>
>
if (cond1) {
...
} else if (cond2) {
...
} else if (cond3) {
...
}
>
I want to activate every single if with a macro preprocessor. All
the combinations are possible: only the first, only the second, only
the third, the first and second... and so on.
>
What's the best method to have a clean code that is always compiled
without errors?
You're right, a real example is better to define my problem.
>
I have a project that can be compiled in different ways, depending on
the final product model (it's an embedded platform, it's a material
device).
I have three models with different characteristics: MODEL_A, MODEL_B,
MODEL_C. Three different builds that are managed at compile time by
defining MODEL macro as MODEL_A, MODEL_B or MODEL_C.
>
For each model, I could have a different features set. FEATURE_1,
FUTURE_2, FUTURE_3, ...
>
#if MODEL == MODEL_A
# define FEATURE_1 1
# define FEATURE_2 0
# define FEATURE_3 0
#elif MODEL == MODEL_B
# define FEATURE_1 0
# define FEATURE_2 1
# define FEATURE_3 0
#elif MODEL == MODEL_C
# define FEATURE_1 1
# define FEATURE_2 1
# define FEATURE_3 1
#endif
>
Now, on the full-featured model (MODEL_C) I could write:
>
if (key == 1) {
...
} else if (key == 2) {
...
} else if (key == 3) {
...
} else {
...
}
>
However, for MODEL_A I should have:
>
if (key == 1) {
...
} else {
...
}
>
For MODEL_B I should have:
>
if (key == 2) {
...
} else {
...
}
>
This is the scenario.
>
I thought using if(0) or if(1), but many times I receive some
warnings from the compiler (condition is always true or condition
is always false).
Les messages affichés proviennent d'usenet.