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.