0

我有一个由外部工具生成的 C 结构。它看起来像这样:

typedef struct externalStruct{
    int  msgID;
    struct internalStruct {     
        long someValue;
    } *internalStruct ;
} externalStruct_t;

执行以下操作使 internalStruct 指向堆上的某个随机值:

externalStruct_t* newExternalStruct = new externalStruct_t;

所以这是我的问题:

如何正确实例化指针“internalStruct”?

4

1 回答 1

1

以下是您在 C 中的操作方法(C99 演示):

externalStruct_t* newExternalStruct = malloc(sizeof(externalStruct_t));
newExternalStruct->internalStruct = malloc(sizeof(*newExternalStruct->internalStruct));

在 C++ 中,您需要插入强制转换(C++ 演示):

externalStruct_t* newExternalStruct = new externalStruct_t;
// You need to rename internalStruct to internalStructType
// to avoid a naming collision:
newExternalStruct->internalStruct = new externalStruct::internalStructType;
于 2013-07-25T18:05:25.823 回答