Macro Processing When a macro name is recognized, its arguments are collected by searching for a matching right parenthesis. If fewer arguments are supplied than are in the macro definition, the trailing arguments are taken to be NULL . Macro evaluation proceeds normally during the collection of the arguments, and any commas or right parentheses that happen to turn up within the value of a nested call are as effective as those in the original input text. After argument collection, the value of the macro is pushed back onto the input stream and rescanned. The size should be prime.
Macros take three slots, and non- macro arguments take one.
Defines name to val or to NULL in val 's absence. If no file is given, or if it is -, the standard input is read. These macros may be redefined, but once this is done the original meaning is lost. Their values are NULL unless otherwise stated. The symbols may be up to five characters long.