My introduction to "##"
-
I actually wanted to do that as a project to "learn XML", but just the basics were such a bumpy ride that I contracted some kind of XML allergy. So if you do: A R T I C L E ! ;)
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
My first real C# project | Linkify!|FoldWithUs! | sighistWish granted, just submitted the article. (Now waiting for the tomatoes to start flying.)
-
Wish granted, just submitted the article. (Now waiting for the tomatoes to start flying.)
Waiting for it to appear...
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
My first real C# project | Linkify!|FoldWithUs! | sighist -
I was never one for the intricacies of the C preprocessor. On my latest project, apparently (or rather, unfortunately) someone is. An .h file has a bunch of definitions (real variable names changed to protect the innocent): statedefs.h:
makeState(State1, 0x01) makeState(State2, 0x02) makeState(State3, 0x03)
Odd, I think, but ok. Then I go look up "makeState". What the... 3 entries? That's not a good sign. Instance 1:#define makeState(NAME, NUM) ST_##NAME## = ##NUM##, typedef enum { #include "statedefs.h" ST_LAST } statetype;
Instance 2: Embedded in the middle of a function(!)#undef makestate #define makeState(NAME, NUM) somevariable++; #include "statedefs.h"
Instance 3:#define makestate(NAME, NUM) { "ST_"#NAME,0,0}, sometype stateinfo[] = { #include "statedefs.h" }
There are no external programs being used, no weird autogeneration stuff.. the entire set of code is a replacement for:enum { ST_State1 = 1, ST_State2 = 2, ST_State3 = 3, ST_LAST }
Most editors I've tried cannot tag it, due to the preprocessor concatenation used ("##" in instance 1). References don't work either. And this is one of the easier to read examples of preprocessor abuse... I just try and remind myself that code written this way makes it that much easier on my next job interview! -
(He's probably the only one.)
:laugh: Yeah, maybe.
Agh! Reality! My Archnemesis![^]
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy