Type of #define variables
c, c-preprocessor
Solution
It has no type. It is a simple text substitution. The text 5000 will be dropped in place wherever MAXLINE appears as a token.
For example:
int a = MAXLINE;
will put the value 5000 in `a`.
While
char *MAXLINE2 = "MAXLINE";
will not result in
char *50002 = "5000";
So, if you want type-checking, macro's are not the way to go. You will want to declare static constants instead, that way type-checking is done by the compiler.
For information on the differences between `static`, `const`, and `#define`, there are many sources, including this question: Static, define, and const in C
Problem
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 `#define`ed variable?