Pointer incompatibilities
According to the ISO C Standard, pointers to void types and pointers to functions are incompatible types. The C/370™, AD/Cycle C/370, IBM C/MVS™, and z/OS® XL C compilers perform some type-checking, such as in assignments, argument passing on function calls, and function return codes.
Note: If you are not conforming to ISO rules for the
use of pointer types, your runtime results may not be as expected,
especially when you are using the OPTIMIZE compiler option.
With the AD/Cycle C/370, and
the C/C++ for MVS/ESA compilers, you could not assign
NULL to an integer value. The statement shown in Figure 1 was
not allowed:
Figure 1. Assignment of NULL to
an integer value
int i = NULL;
With the z/OS XL C compilers, you can assign NULL pointers to void types only if you specify LANGLVL(COMMONC) when you compile your program. For information about constructs supported by LANGLVL(COMMONC) but not by LANGLVL(EXTENDED) or LANGLVL(ANSI), refer to LANGLVL compiler option in z/OS XL C/C++ User's Guide.