[英]assignment makes pointer from integer without a cast [enabled by default] when assigning char pointer to character array
我试图返回一个指向字符数组的指针。 该功能位于其他文件中。 我将文件编译在一起,它可以很好地打印出“ hello”,但仍会发出警告
警告:赋值使指针从整数开始而没有强制转换[默认启用]
我尝试将function()
的返回值强制转换为(char *)
,但最终得到了不同的警告:
警告:从不同大小的整数[-Wint-to-pointer-cast]“强制转换为指针。
我究竟做错了什么?
文件1
#include <stdio.h>
int main()
{
printf("%s\n", 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("%s\n", function());
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.