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