在 C 和 C++ 中声明 IBM i 指针变量
可以通过下列任一方法声明指向 *PGM 对象 (程序) 的指针:
- 通过声明指向 typedef 的指针,该 typedef 已指定为具有与 #pragma linkage 伪指令或外部操作系统链接的操作系统链接。
- 通过声明系统指针 (_SYSPTR)。
图 1 显示了 IBM® i C 指针声明。 图 2 显示 IBM i C++ 指针声明。
#include <pointer.h> /* The pointer header file. */
_SYSPTR sysp; /* A system pointer. */
_SPCPTR spcp; /* A space pointer. */
_INVPTR invp; /* An invocation pointer. */
_OPENPTR opnp; /* An open pointer. */
_LBLPTR lblp; /* A label pointer. */
void (*fp) (int); /* A function pointer. */
#pragma datamodel (p128)
#pragma linkage (OS_FN_T, OS)
#pragma datamodel(pop)
typedef void (OS_FN_T) (int); /* Typedef of an OS-linkage function.*/
OS_FN_T * os_fn_p; /* An OS-linkage function pointer. */
int * ip; /* A pointer to a data object. */
#include <pointer.h> /* The pointer header file. */
_SYSPTR sysp; /* A system pointer. */
_SPCPTR spcp; /* A space pointer. */
_INVPTR invp; /* An invocation pointer. */
_OPENPTR opnp; /* An open pointer. */
_LBLPTR lblp; /* A label pointer. */
void (*fp) (int); /* A function pointer. */
#pragma datamodel (p128)
/* Typedef of an OS-linkage function. */
extern "OS" typedef void (OS_FN_T) (int);
#pragma datamodel(pop)
int * ip; /* A pointer to a data object. */