警告:赋值从整数中生成没有大小写的指针

时间:2014-11-29 03:02:46

标签: c pointers warnings

我需要帮助,请不要知道如何解决这个问题的分配使指针在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;
}

1 个答案:

答案 0 :(得分:2)

看起来你在定义它之前尝试调用getDirSuperBlock(),并且你没有原型。 当你这样做时,C编译器定义它"隐含地" (这意味着它基本上猜测它返回的类型以及它的参数应该是什么类型/数字) 当发生这种情况时,它总是猜测你的返回类型是一个int。因此,您将函数定义为char* getDirSuperBlock(),但在进入该部分之前,编译器会认为它看起来像这样:int getDirSuperBlock()。所以你可以通过在调用之上移动它的声明来解决这个问题,或者在调用它之前添加一个原型,如下所示: char * getDirSuperBlock();或者,您可以明确地将int强制转换为char *,如下所示:openDir = (char*)getDirSuperBlock();但这可能不是一个好主意,因为这意味着int和char *是相同的大小,在每种情况下都不是这样。