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