在 C 和 C++ 中声明 IBM i 指针变量

可以通过下列任一方法声明指向 *PGM 对象 (程序) 的指针:
  • 通过声明指向 typedef 的指针,该 typedef 已指定为具有与 #pragma linkage 伪指令或外部操作系统链接的操作系统链接。
  • 通过声明系统指针 (_SYSPTR)。
您可以使用 ILE C <pointer.h> 头文件提供的类型定义(typedefs)来声明其他 IBM i 指针类型的变量。

图 1 显示了 IBM® i C 指针声明。 图 2 显示 IBM i C++ 指针声明。

图 1。 ILE 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.       */
图 2。 ILE 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)
/* 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.       */