Next: , Previous: , Up: Preprocessing   [Contents][Index]


26.5 Macros

A macro is a fragment of code that has been given a name. Whenever the name is used, it is replaced by the contents of the macro. There are two kinds of macros. They differ mostly in what they look like when they are used. Object-like macros resemble data objects when used, function-like macros resemble function calls.

You may define any valid identifier as a macro, even if it is a C keyword. In the preprocessing stage, GCC does not know anything about keywords. This can be useful if you wish to hide a keyword such as const from an older compiler that does not understand it. However, the preprocessing operator defined (see defined) can never be defined as a macro, and C++’s named operators (see C++ Named Operators in Using the GNU Compiler Collection) cannot be macros when compiling C++ code.

The operator # is used in macros for stringification of an argument (see Stringification), and ## is used for concatenation of arguments into larger tokens (see Concatenation)


Next: , Previous: , Up: Preprocessing   [Contents][Index]