2015-07-19 34 views
2

我试图返回一个指向字符数组的指针。该功能位于不同的文件中。我编译的文件一起,它打印出“你好”就好了,但仍然会产生一个警告赋值时将指针指向整数而不进行转换[默认情况下启用]将char指针指定给字符数组时

警告:赋值时将整数指针没有施放[默认启用]

我试图铸造的function()返回值给(char *),但结束了一个不同的警告:

警告:投从不同大小的整到指针[-Wint到指针铸]”代替

我在做什么错?

文件1个

#include <stdio.h>                       

int main()                         
{                                                 
    printf("%s\n", function());                     
    return 0;                        
} 

文件2

#include <stdio.h>                      

char *message = "hello";                     

char *function()                       
{                           
    return(message);                      
}                           

回答

3

这里的问题是缺少原型。由于历史原因,C允许您在不声明它们的情况下使用函数。但是,所有这些功能都被认为是返回int,并且其所有参数也被认为是int

因为你的函数返回char*,你需要添加一个原型,它(这是一个好主意,有您的所有函数的原型,包括那些确实返回int):

#include <stdio.h>                       

char *function(); // <<== Add this line 

int main()                         
{                                                 
    printf("%s\n", function());                     
    return 0;                        
} 
相关问题