我需要通过符合数组的Microsoft RPC结构传递。这是我在IDL中写的方式:
struct BarStruct
{
byte a;
int b;
byte c;
long lArraySize;
[size_is(lArraySize)] char achArray[*];
};
生成标题:
struct BarStruct
{
byte a;
int b;
byte c;
long lArraySize;
char achArray[ 1 ];
} ;
为什么achArray的固定长度为1?如何将带有例如10个元素的数组传递给它?
答案 0 :(得分:0)
这样的事情:
BarStruct* p = (BarStruct*)CoTaskMemAlloc(
offsetof(BarStruct, achArray) + 10*sizeof(char));
基本上,您需要分配内存,就好像结构最后有achArray[10]
成员一样。 offsetof(BarStruct, achArray)
为您提供结构固定部分的大小,但不包括achArray
。为此,您可以添加可变大小的数组。