c - How to make #if #endif part of a macro -


#define m(n)\ #if n == 5\     /*several lines of code        can't replaced          tertnary operator*/ #else\     n;\ #endif 

when use macro so

m(5); 

i expect output

// within #if #else block 

but doesn't compile.

i'm not surprised doesn't compile: know #if cannot used on continuation line ie "\".

i've tried

#define pound_if #if 

and use pound_if doesn't work.

is possible do?

is there nifty boost pre-processor stuff can used?

succinctly, can't. can rely on optimizer instead, though:

#define m(n)\     { if (n == 5) { \     /*several lines of code        can't replaced          ternary operator*/ \     } else { n; } } while (0) 

if compiler can determine value of n 5 when code run (e.g. write m(5)), code in body of if included in generated code. if compiler can determine value of n not 5 when code run, generate code in body of else clause. , if can't determine value be, preprocessor not have been able either, compiler include code.


Comments

Popular posts from this blog

matlab - error with cyclic autocorrelation function -

django - (fields.E300) Field defines a relation with model 'AbstractEmailUser' which is either not installed, or is abstract -

c# - What is a good .Net RefEdit control to use with ExcelDna? -