ANSI specifies that identifiers that begin with two underscores are reserved in all scopes for use by the implementation. In Microsoft C 7.0, you should avoid using your own identifiers with these names because they may conflict with existing or future Microsoft-specific identifiers.
ANSI also specifies that identifiers that begin with a single underscore and a lower case letter are reserved at file scope for use by the implementation. This means that you should not start your own global variable and function names with an underscore because they may conflict with existing or future MS-specific identifiers.
Under /Ze, Microsoft C 7.0 still permits references to old Microsoft-specific identifier names that did not follow the ANSI rules for implementation-reserved identifiers. For example, you may use either _MSDOS or MSDOS to test whether you are compiling for MS-DOS, near or __near to specify a near address, and either read or _read to call that runtime library function. If you reference MS-specific identifiers that are global variable names or function names and you use the non-ANSI form, you must link with OLDNAMES.LIB. (Under /Ze, your program is automatically linked with OLDNAMES.LIB.)
See “Keywords” for the ANSI and Microsoft-specific keywords.