gpt4 book ai didi

c - "#if ..."(带有省略号)是做什么的?

转载 作者:行者123 更新时间:2023-12-05 02:29:10 26 4
gpt4 key购买 nike

我在研究 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 ... 的作用吗?任何帮助将不胜感激。

最佳答案

链接代码的文档页面并不意味着反射(reflect) #if 指令的实际情况。它仅用于根据定义的内容显示选项。

我系统上的实际 winnt.h header (在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include 下)具有以下内容

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

关于c - "#if ..."(带有省略号)是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72352901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com