Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C99中使用struct和malloc 我需要把我的C++代码翻译成C99:< /P> struct TransferData { int data[256]; } *readData; readData = (TransferData *) malloc(sizeof(struct TransferData));_C_Struct_Malloc - Fatal编程技术网

如何在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。