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