unsigned
char and unsigned short promote to
unsigned int .)
extern objects have file scope.
If the name of a macro being replaced is found during the rescan of the replacement list, it is macro replaced.
# character occurs in the first column of
a line. Any preprocessor directives preceded by white space are
ignored.
#ifdef is treated as "#if
defined "
#ifndef is treated as "#if
!defined "
## operators when a valid token results after
concatenation, except that adjoining white space is not deleted.
If the resulting token is not valid, the comment in a macro
replacement is deleted.