PRB: Signed/Unsigned Mismatch Warning When Using MSCS Constants
Article ID: 182659
Article Last Modified on 1/5/2006
APPLIES TO
- Microsoft Platform Software Development Kit-January 2000 Edition
- Microsoft Windows NT Server 4.0 Enterprise Edition
This article was previously published under Q182659
SYMPTOMS
When building a project that uses "constants" defined for Microsoft Cluster
Server, the compiler might report a signed or unsigned mismatch warning.
CAUSE
The values are defined in clusapi.h using enum instead of #define. Enum
values are of type int, but the values are most often used as DWORD
(unsigned long) parameters. If the high bit of the value is set, the
compiler generates a warning.
RESOLUTION
The values can be cast to a DWORD before assigning them to, or using them
as, a DWORD. For example:
dwParam = (DWORD) CLUSTER_CHANGE_HANDLE_CLOSE;
STATUS
This behavior is by design.
MORE INFORMATION
When the high bit of one value of an enum is set, the compiler considers
the value to be negative. When the value is assigned to an unsigned
variable, the compiler warns that some information (the "negativeness") is
lost in the assignment.
Enums are used instead of #define to make it easier for other languages to
use the values from a generated type library.
Additional query words: server cluster
Keywords: kbnofix kbprb KB182659