Undefines the preprocessor symbol name. This option removes any initial definition of the preprocessor symbol name created by -D on the same command line including those placed there by the command-line driver.
-U has no effect on any preprocessor directives in source files. You can give multiple -U options on the command line.
If the same name is specified for both -D and -U on the command line, name is undefined, regardless of the order the options appear. In the following example, -U undefines __sun:
cc -U__sun text.c
Preprocessor statements of the following form in test.c will not take effect because __sun is undefined.
See B.2.7 -Dname[(arg[,arg])][=expansion] for a list of predefined symbols.