C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)

SYSTYPE GUARDIAN
Wlp64 does not support the following c89 options :
-Wsql
-Wsystype=guardian
-Wversion2
Wlp64 does not support the following c99 options :
-Wsystype=guardian
Pointer Modifiers
The pointer modifiers specify the size of a pointer. The _ptr64 modifier is used to declare a 64-bit
pointer and the _ptr32 modifier is used to declare a 32-bit pointer. These modifiers may be used
in both ILP32 and LP64 modes.
The grammar for the new pointer modifiers are:
pointer:
[ modifier-list ] * [ type-qualifier-list]
[ modifier-list ] * [ type-qualifier-list] pointer
modifier-list:
modifier [ modifier-list ]
modifier:
_far | _near | _baddr | _waddr | _procaddr | _ptr32 | _ptr64
At most, one modifier is specified for a pointer type.
C++ does not allow function overloading based entirely on differences in return types. In C++
mode, pointer modifiers alone must not be used to overload functions.
The compiler returns an error on attempts to overload functions based on only pointer size
differences.
Example
char _ptr64 *Ptr1; /* Ptr1 is a 64-bit pointer to a character. /
char _ptr32 *Ptr2; /* Ptr2 is a 32-bit pointer to a character. /
char *Ptr3; /* Size of Ptr3 is the default size for the
compilations data model. */
typedef void _far _ptr64 * Ptr64; /* Error, cannot specify multiple
modifiers. */
void _ptr32 *foo (void);
void _ptr64 *foo(void) {} /* Error, mismatched modifiers on return type. */
void Foo (void *ptr);
void Foo (void _ptr64 *ptr); /* Error, mismatched modifiers on parameter
type. */
Accessing 32-bit memory in the LP64 Data Model
The following functions are used in a LP64 data model process to access a secondary 32-bit
addressable heap space:
calloc32()
free32()
malloc32()
realloc32()
heap_check32()
heap_check_always32()
For more details, see Open System Services Library Calls Reference Manual.
392 LP64 Data Model