如何在C99中使用struct和malloc 我需要把我的C++代码翻译成C99:< /P> struct TransferData { int data[256]; } *readData; readData = (TransferData *) malloc(sizeof(struct TransferData));
我几乎什么都试过了,但每次都会出现编译器错误。如何在C99中使用struct和malloc 我需要把我的C++代码翻译成C99:< /P> struct TransferData { int data[256]; } *readData; readData = (TransferData *) malloc(sizeof(struct TransferData));,c,struct,malloc,C,Struct,Malloc,我几乎什么都试过了,但每次都会出现编译器错误。 有人能帮忙吗?对于C,您需要强制转换为struct TransferData*,而不是TransferData*。你没有一个名为TransferData*的类型,也没有完全放弃演员阵容,但这是另一场圣战,毫无意义的IMHO 您可以按照@icepack所说的做,也可以像这样更改结构定义: typedef struct { int data[256]; } TransferData; TransferData *readData; read
有人能帮忙吗?对于C,您需要强制转换为struct TransferData*,而不是TransferData*。你没有一个名为TransferData*的类型,也没有完全放弃演员阵容,但这是另一场圣战,毫无意义的IMHO 您可以按照@icepack所说的做,也可以像这样更改结构定义:
typedef struct {
int data[256];
} TransferData;
TransferData *readData;
readData = malloc(sizeof(TransferData));
编辑:请注意,最好将sizeof与变量而不是类型一起使用,以避免重复:
readData = malloc(sizeof(*readData));
但在使用此样式时,请注意不要意外地传递指针的大小
没有TyWIFF,需要在C中编写StructType结构,而C++中不需要。正如在评论中所说,在C中不需要强制转换malloc的结果,只会使代码变得混乱。它在C++中是必需的,但是你不应该在那里使用Maloc。
< P>如果你使用C,你不应该抛出Maloc的结果。重复类型信息是一种糟糕的风格。同样,结构的类型是结构传递数据,而不是C++中的传递数据。我建议readData = malloc(sizeof(*readData));
您还应该发布一些编译器错误。虽然它在C++中是必需的,但是你可能不应该首先使用MALOC。