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?
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