gpt4 book ai didi

c - 你怎么知道结构中的某些字段是数组?

转载 作者:可可西里 更新时间:2023-11-01 10:55:37 25 4
gpt4 key购买 nike

我正在查看来自 Microsoft wincrypt.h 头文件的这段 C 代码

//+-------------------------------------------------------------------------
// Attributes
//
// Where the Value's PATTR_BLOBs are in their encoded representation.
//--------------------------------------------------------------------------
// certenrolls_begin -- CRYPT_ATTRIBUTE
typedef struct _CRYPT_ATTRIBUTE {
LPSTR pszObjId;
DWORD cValue;
PCRYPT_ATTR_BLOB rgValue;
} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;

typedef struct _CRYPT_ATTRIBUTES {
DWORD cAttr;
PCRYPT_ATTRIBUTE rgAttr;
} CRYPT_ATTRIBUTES, *PCRYPT_ATTRIBUTES;
// certenrolls_end

我正在运行这个例子 How To Get Information from Authenticode Signed Executables .我可以在代码中看到 rgValuergAttr 都作为数组访问,例如

pSignerInfo->AuthAttrs.rgAttr[n].rgValue[0].pbData,
pSignerInfo->AuthAttrs.rgAttr[n].rgValue[0].cbData,

如果我没有看过这个例子,我永远不会明白这个。是 Windows 特有的东西还是我对 C 中的结构和类型声明一无所知?

最佳答案

PCRYPT_ATTR_BLOBCRYPT_ATTR_BLOB*,指向CRYPT_ATTR_BLOB的指针。这可以是指向单个值的指针,也可以是指向数组的指针。您无法从类型声明中分辨出来,必须阅读文档。

那个documentation说:

cValue

A DWORD value that indicates the number of elements in the rgValue array.

rgValue

Pointer to an array of CRYPT_INTEGER_BLOB structures.

所以在这种情况下,rgValue 是一个指向数组的指针。

关于c - 你怎么知道结构中的某些字段是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285966/

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