2015-07-19 37 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;                        
} 
相關問題