Deutsch English Français Italiano |
<868qp8txwz.fsf@linuxsc.com> 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: Tim Rentsch <tr.17687@z991.linuxsc.com> Newsgroups: comp.lang.c Subject: Re: Concatenated if and preprocessor Date: Thu, 13 Mar 2025 14:37:16 -0700 Organization: A noiseless patient Spider Lines: 48 Message-ID: <868qp8txwz.fsf@linuxsc.com> References: <vquuhg$34o8d$2@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Thu, 13 Mar 2025 22:37:18 +0100 (CET) Injection-Info: dont-email.me; posting-host="72f99fc8fdb67b940ef68d9485a6ab68"; logging-data="4080310"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/l0DAeSNt4eZdyydKw9M/w4gsnSG+YVog=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:drSgY7pApoWPxyvTQTXa5FozqWc= sha1:61zgFOLteaKgP/iLX6uGtv2o5e4= Bytes: 2074 pozz <pozzugno@gmail.com> writes: > 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? if ( ..bypass all further tests.. ) { // for a "skip all conditional segments" case (if needed) ... #if TEST_1 } else if (cond1) { ... #endif #if TEST_2 } else if (cond2) { ... #endif #if TEST_3 } else if (cond3) { ... #endif } else { // for a "no conditional segment" ran case (if needed) ... } Having said that, it's hard to imagine a scenario where doing something like this is the best way to solve the higher level problem. It is almost certainly better to rethink the reasoning that resulted in choosing this scheme, and find a way to avoid it.