我正在研究windows头文件,我遇到了一个我不认识的预处理器语句。我已经找了一个星期关于这份声明的信息了,但是我找不到任何关于它的信息。我不确定这是否只是一个搜索引擎不友好的短语,或者是否真的没有太多关于它的网络。我在MS头文件中发现了这个预处理器的几个用途。
下面是本页的一个例子:
typedef struct _SID {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
#if ...
DWORD * SubAuthority[];
#else
DWORD SubAuthority[ANYSIZE_ARRAY];
#endif
} SID, *PSID;
注意:我是专门问#if ...
的,有一个省略号。
谁能详细说明一下预处理器#if…呢?如有任何帮助,我将不胜感激。
代码链接的文档页并不意味着反映#if
指令的实际情况。它只是用来显示选项的定义。
我的系统(在C:Program Files (x86)Microsoft sdk Windowsv7.1AInclude下)的实际winnt.h头文件如下
typedef struct _SID {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
#ifdef MIDL_PASS
[size_is(SubAuthorityCount)] DWORD SubAuthority[*];
#else // MIDL_PASS
DWORD SubAuthority[ANYSIZE_ARRAY];
#endif // MIDL_PASS
} SID, *PISID;
所以在#if
之后没有实际的...
。它只是在文档中为简洁起见。