“#if ...”(带有省略号)是做什么的?

What does "#if ..." (with an ellipsis) do?

我在研究 windows 头文件时发现了一个我不认识的预处理器语句。大约一个星期以来,我一直在搜索有关此声明的任何信息,但在任何地方都找不到任何相关信息。我不确定它是否只是一个搜索引擎不友好的短语,或者网络上是否真的没有太多关于它的信息。我在 MS 头文件中发现了这个预处理器的几个用途。

这是来自 this 页面的示例:

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 SDKs\Windows\v7.1A\Include下)的实际winnt.h header有以下

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 之后没有实际的 ...。为了简洁起见,它就在文档中。