2

当 typedef 中有三个项目时,这意味着什么?

例如:

typedef CK_BYTE     CK_PTR       CK_BYTE_PTR;

我知道,如果你有typedef CK_BYTE CK_PTR; 那么CK_BYTE就只能称为CK_PTR.

4

3 回答 3

15

一点谷歌搜索表明这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出现在同一个头文件中。

于 2012-05-28T19:35:29.160 回答
3

它不是有效的语法,除非其中之一是宏(例如#define CK_PTR *,这是可怕的)。

于 2012-05-28T19:30:22.887 回答
3

假设CK_PTR定义为*您将 a类型定义CK_BYTE*为 a CK_BYTE_PTR

于 2012-05-28T19:30:49.057 回答