c语言 - "#if ..."(带省略号)有什么作用?



我正在研究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之后没有实际的...。它只是在文档中为简洁起见。

相关内容

  • 没有找到相关文章

最新更新