Assignment of Void Pointer Does Not Give Warning MessageLast reviewed: July 31, 1997Article ID: Q41374 |
6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50 1.51 | 1.00 2.00 2.10
MS-DOS | OS/2 | WINDOWS | WINDOWS NTkbtool The information in this article applies to:
SUMMARYThe Sample Code below shows an inconsistency with the way that the Microsoft compilers listed above deal with pointer checking. The ANSI standard is unclear about whether an assignment to a void pointer should be checked to see if it is being assigned a nonpointer variable. The code below shows that character pointers are checked while void pointers are not; the code will generate the following warnings:
16-bit compilersThe compiler generates the following warning for the void pointer in the sample code as well as the character pointer:
C4047: '=' different levels of indirection 32-bit compilersThe compiler generates the following warming with the sample code:
C4047: "=": 'void *' differs in levels of indirection from 'int' 7.0 and laterCompiler versions 7.0 and later generate the following error in both cases if the program is compiled as a C++ program (.cpp extension).
error C2446: '=' : no conversion from 'int ' to 'void *' MORE INFORMATION
Sample Code:
/* Compile options needed: none */ int i; /* i could be float, double, char, long, or unsigned */ char *p; void *v; void main(){ p = i; /* This will give a warning message */ v = i;}
|
Additional reference words: kbinf 6.00 6.00a 6.00ax 7.00 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |