cc-preprocessor

Difference between macro and preprocessor


From what I understand , #define blah 8 is a macro, while # is the pre-processor directive.

Can we say that #include, #if, #ifdef, etc. are also macros, or are they called something else? Or is it that macro is just a term used for #define statements only?


Solution

  • Lines that start with # are preprocessing directives. They are directives that tell the preprocessor to do something.

    #include, #if, #ifdef, #ifndef, #else, #elif, #endif, #define, #undef, #line, #error, and #pragma are all preprocessing directives. (A line containing only # is also a preprocessing directive, but it has no effect.)

    #define blah 8 is a preprocessing directive, it is not a macro. blah is a macro. This #define preprocessing directive defines the macro named blah as an object-like macro replaced by the token 8.