当 typedef 中有三个项目时,这意味着什么?
例如:
typedef CK_BYTE CK_PTR CK_BYTE_PTR;
我知道,如果你有typedef CK_BYTE CK_PTR
; 那么CK_BYTE
就只能称为CK_PTR
.
一点谷歌搜索表明这CK_PTR
是一个定义在pkcs11.h
. 按照该链接查看这些定义的文档。
通常定义为:
#define CK_PTR *
但在一些古老的系统上,它可能被定义为
#define CK_PTR far *
wherefar
是一个大部分已过时的系统特定关键字,它指定某种非标准类型的指针。
所以这:
typedef CK_BYTE CK_PTR CK_BYTE_PTR;
相当于这个(更清晰的)代码:
typedef CK_BYTE *CK_BYTE_PTR;
它定义CK_BYTE_PTR
为指向 a 的指针CK_BYTE
。
引用的定义CK_BYTE_PTR
出现在同一个头文件中。
它不是有效的语法,除非其中之一是宏(例如#define CK_PTR *
,这是可怕的)。
假设CK_PTR
定义为*
您将 a类型定义CK_BYTE*
为 a CK_BYTE_PTR
。