我有以下简单代码:
结构的第一个用法f
工作正常,但是我无法使用 n
malloc-我遇到一个错误,因为它无效*无法分配给myValues*。我知道我不应该施放马洛克,那我该怎么做?怎么了?
确切的错误:
a value of type "void *" cannot be assigned to an entity of time "myValues *"
#include <stdio.h>
#include <stdlib.h>
typedef struct values
{
int a;
char c;
void *pv;
values *next;
} myValues;
int main(){
myValues f;
myValues *n = malloc(sizeof(myValues));
}
很明显,该程序被编译为C 程序。否则,编译器将发出错误,即在结构定义中未声明名称values
。
typedef struct values
{
int a;
char c;
void *pv;
values *next;
^^^^^^
} myValues;
如果是这样,您必须写
myValues *n = ( myValues * )malloc(sizeof(myValues));
因为类型void *
的指针不能隐式转换为另一种类型的指针。
(或者您需要将程序完全重写为C 程序,例如,将函数malloc
的调用替换为使用操作员new
。)
,或者您应该将程序编译为C程序。在这种情况下,您必须写
typedef struct values
{
int a;
char c;
void *pv;
struct values *next;
^^^^^^^^^^^^^
} myValues;