0

我需要通过具有一致数组的 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 个元素的数组传递给它?

4

1 回答 1

0

像这样的东西:

BarStruct* p = (BarStruct*)CoTaskMemAlloc(
    offsetof(BarStruct, achArray) + 10*sizeof(char));

基本上,您需要分配内存,就好像结构achArray[10]最后有成员一样。offsetof(BarStruct, achArray)为您提供结构固定部分的大小,最多但不包括achArray. 为此,您添加了可变大小的数组。

于 2014-03-25T19:39:22.237 回答