Deutsch   English   Français   Italiano  
<slrnvt8cmr.2ff.dan@djph.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Dan Purgert <dan@djph.net>
Newsgroups: comp.lang.c
Subject: Re: Concatenated if and preprocessor
Date: Fri, 14 Mar 2025 13:44:59 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <slrnvt8cmr.2ff.dan@djph.net>
References: <vquuhg$34o8d$2@dont-email.me> <vr15ti$rtjs$1@dont-email.me>
Injection-Date: Fri, 14 Mar 2025 14:45:00 +0100 (CET)
Injection-Info: dont-email.me; posting-host="1726fb14a87ff4be42db3ee14742b02e";
	logging-data="1481643"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/I4AajTsjuX2E4ldzYwbsXno2H50801qw="
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:WjQfmR7uav2IbtWWoodpT9VKLrY=
Bytes: 2533

On 2025-03-14, pozz wrote:
> 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


So are you saying that the features are potentially independent of the
models, or that "Model A" explicitly defines that only "FEATURE_1" is
available (and will never support the other two) ?

-- 
|_|O|_| 
|_|_|O| Github: https://github.com/dpurgert
|O|O|O| PGP: DDAB 23FB 19FA 7D85 1CC1  E067 6D65 70E5 4CE7 2860