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.

Understanding the Context

The #define directive is a preprocessor directive; the preprocessor replaces those macros by their body before the compiler even sees it. 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.

Key Insights

Oh ... How do I define a function with optional arguments? Asked 14 years, 1 month ago Modified 1 year, 9 months ago Viewed 1.2m times Is it better to use static const variables than #define preprocessor? Or does it maybe depend on the context? What are advantages/disadvantages for each method?

Final Thoughts

If I have: #define MAXLINE 5000 What type is MAXLINE understood to be? Should I assume it is an int? Can I test it somehow? In general, how can one determine the type of #defineed variable? I have been seeing code like this usually in the start of header files: #ifndef HEADERFILE_H #define HEADERFILE_H And at the end of the file is #endif What is the purpose of this?