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?

Original source

Related problems