我试图返回一个指向字符数组的指针。该函数位于另一个文件中。我将这些文件编译在一起,它打印出"hello",但仍然产生一个警告
警告:赋值使指针从整数转换而不强制转换[默认启用]
我尝试将function()
的返回值转换为(char *)
,但最终出现了不同的警告:
警告:从不同大小的整数转换为指针[-Wint-to-pointer-cast]"。
我做错了什么?
文件1#include <stdio.h>
int main()
{
printf("%sn", function());
return 0;
}
文件2 #include <stdio.h>
char *message = "hello";
char *function()
{
return(message);
}
这里的问题是缺少原型。由于历史原因,C允许您在不声明函数的情况下使用函数。但是,所有这些函数都被认为返回int
,并且它们的所有参数也被认为是int
。
因为你的函数返回char*
,你需要为它添加一个原型(这是一个好主意,所有的函数都有原型,包括那些确实返回int
):
#include <stdio.h>
char *function(); // <<== Add this line
int main()
{
printf("%sn", function());
return 0;
}