Tahoe Daily Tribune.com: Certified Athletic Trainers’ Role in Our Community’s Health (Opinion) Every March, we celebrate National Athletic Training Month, recognizing the crucial role certified athletic trainers (ATCs) play across the community. At Barton Health, our team of certified athletic ... The #define directive is a preprocessor directive; the preprocessor replaces those macros by their body before the compiler even sees it.

Understanding the Context

Think of it as an automatic search and replace of your source code. A const variable declaration declares an actual variable in the language, which you can use... well, like a real variable: take its address, pass it around, use it, cast/convert it, etc. Oh ...

Key Insights

What is the point of #define in C++? I've only seen examples where it's used in place of a "magic number" but I don't see the point in just giving that value to a variable instead. c++ - Why use #define instead of a variable - Stack Overflow The question is if users can define new macros in a macro, not if they can use macros in macros. I know that this is a long time after the original query, but this may still be useful. This can be done in GCC using the stringify operator "#", but it requires two additional stages to be defined first.

Final Thoughts

#define XSTR(x) STR(x) #define STR(x) #x The value of a macro can then be displayed with: #pragma message "The value of ABC: " XSTR(ABC) See: 3.4 Stringification in the gcc online ... As far as I know, what you're trying to do (use if statement and then return a value from a macro) isn't possible in ISO C... but it is somewhat possible with statement expressions (GNU extension). Since #define s are essentially just fancy text find-and-replace, you have to be really careful about how they're expanded. I've found that this works on gcc and clang by default: