[英]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.