Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ typedef中的三个术语是什么意思?_C++_C_Typedef - Fatal编程技术网

C++ typedef中的三个术语是什么意思?

C++ typedef中的三个术语是什么意思?,c++,c,typedef,C++,C,Typedef,当typedef中有三个项目时,它意味着什么 例如: typedef CK_BYTE CK_PTR CK_BYTE_PTR; 我知道如果你只有typedef CK_BYTE CK_PTR;然后CK_BYTE就可以被称为CK_PTR它不是有效的语法,除非其中一个是宏(例如#define CK_PTR*,这很可怕)。按照该链接查看这些定义的文档 它通常被定义为: #define CK_PTR * 但在一些古代系统中,它可能被定义为 #define CK_PTR far *

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

例如:

typedef CK_BYTE     CK_PTR       CK_BYTE_PTR;

我知道如果你只有
typedef CK_BYTE CK_PTR
;然后
CK_BYTE
就可以被称为
CK_PTR

它不是有效的语法,除非其中一个是宏(例如
#define CK_PTR*
,这很可怕)。按照该链接查看这些定义的文档

它通常被定义为:

#define CK_PTR *
但在一些古代系统中,它可能被定义为

#define CK_PTR far *
其中,
far
是一个过时的系统特定关键字,用于指定某种非标准类型的指针

因此:

typedef CK_BYTE CK_PTR CK_BYTE_PTR;
相当于此(更清晰)代码:

它将
CK\u BYTE\u PTR
定义为指向
CK\u BYTE
的指针


引用的
CK\u BYTE\u PTR
的定义出现在同一头文件中。

Post这两个术语是如何定义的。
CK\u BYTE
CK\u PTR
可能是typedefs或macros。它们是如何定义的?
CK\u PTR
是否有可能扩展到
*
?(如果是这样的话,它主要是用来混淆的。)它并不像看上去那么可怕;它的目的是在古老的x86系统上隐藏
far
关键字。搞定了,谢谢!在另一个文件中有这样的定义,你知道为什么有人会这样做吗?@m3hughes:Keith的回答似乎涵盖了这一点(+1!)。谢谢,这帮了大忙!我会投你一票,但我的名声还不够好。
typedef CK_BYTE *CK_BYTE_PTR;