Microsoft KB Archive/68385

= PRB: Compiler Lacks Warnings for Options Incompatible with /u =

Article ID: 68385

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft C Professional Development System 6.0a
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 1.52 Professional Edition
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 5.0 Standard Edition

-



This article was previously published under Q68385





SYMPTOMS
In the Microsoft C/C++ compiler, the /u compiler option turns off the definition of all predefined identifiers. Therefore, other compiler options that implicitly define identifiers are incompatible with /u. Nevertheless, no warnings or errors are generated if an option incompatible with /u is specified.

For example, the /J option changes the default char type from signed char to unsigned char and implicitly defines the macro _CHAR_UNSIGNED. If both /u and /J are specified on the same command line, the default char type for that translation unit will be unsigned char but _CHAR_UNSIGNED will not be defined. Moreover, the compiler issues no warning, not even at warning level 4, that /u will undefine those macros defined by /J.



CAUSE
This is expected behavior. The /U (undefine) option turns off the definition of an single identifier already defined for the preprocessor. The /u option turns off every defined identifier. Both the /U and /u options apply to predefined names and user defined ones.

Additional query words: 8.00 8.00c 9.00 9.10

Keywords: kbprb kbcompiler KB68385

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.