The arguments in the parenthesized list
following the macro name are substituted in all the code following the closing
parenthesis. The preprocessor removes the name PRINT and substitutes the
code wherever the macro is called, so the compiler cannot generate any error
messages using the macro name, and it doesn’t do any type checking on the
arguments (the latter can be beneficial, as shown in the debugging macros at the
end of the
chapter).