PRB: Compiler Lacks Warnings for Options Incompatible with /u (68385)
The information in this article applies to:
- Microsoft C for MS-DOS
- Microsoft Visual C++ for Windows, 16-bit edition 1.0
- Microsoft Visual C++ for Windows, 16-bit edition 1.5
- Microsoft Visual C++ for Windows, 16-bit edition 1.51
- Microsoft Visual C++ for Windows, 16-bit edition 1.52
- Microsoft Visual C++, 32-bit Editions 1.0
- Microsoft Visual C++, 32-bit Editions 2.0
- Microsoft Visual C++, 32-bit Editions 2.1
- Microsoft Visual C++, 32-bit Editions 4.0
- Microsoft Visual C++, 32-bit Editions 5.0
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.
Modification Type: | Minor | Last Reviewed: | 7/5/2005 |
---|
Keywords: | kbCompiler kbprb KB68385 |
---|
|