我需要帮助,请不要知道如何解决这个问题的分配使指针在C
警告:赋值从整数开始,没有大小写[默认启用]
openDir = getDirSuperBlock();
(箭头处于等号)
char* = openDir;
openDir = malloc(128);
openDir = getDirSuperBlock();
getDirSuperBlock
功能就是这个
char* getDirSuperBlock()
{
char* dir;
dir = malloc(128);
int i;
get_block(4,dir);
return dir;
}
答案 0 :(得分:2)
看起来你在定义它之前尝试调用getDirSuperBlock(),并且你没有原型。
当你这样做时,C编译器定义它"隐含地" (这意味着它基本上猜测它返回的类型以及它的参数应该是什么类型/数字)
当发生这种情况时,它总是猜测你的返回类型是一个int。因此,您将函数定义为char* getDirSuperBlock()
,但在进入该部分之前,编译器会认为它看起来像这样:int getDirSuperBlock()
。所以你可以通过在调用之上移动它的声明来解决这个问题,或者在调用它之前添加一个原型,如下所示:
char * getDirSuperBlock();
或者,您可以明确地将int
强制转换为char *
,如下所示:openDir = (char*)getDirSuperBlock();
但这可能不是一个好主意,因为这意味着int和char *是相同的大小,在每种情况下都不是这样。