当我第一次偶然发现far
限定符时,我正在浏览一些代码,现在对我来说为什么使用这些是有道理的。但是对于我们今天使用的内存模型,为什么这些甚至还存在呢?人们是否真的在实践中使用这些,或者它们只是作为过去的小饰品存在?
typedef BOOL near *PBOOL;
使用and之间甚至有什么区别typedef BOOL far *LPBOOL;
?
这些还有什么实际用途吗?或者我应该换个方式看。
// WinDef.h ~Line 144
#undef FAR
#undef NEAR
#define FAR far
#define NEAR near
#ifndef CONST
#define CONST const
#endif
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID;
编辑:第一条评论也提出了一个很好的观点,如果far
并且near
被定义为空,这意味着什么?
// WinDef.h: Lines 91-91
#define far
#define near