2011-11-29 68 views
2

我試圖使用功能的gethostbyname,但我的代碼:如何使用的gethostbyname在C

int handleTCP(char *hostname, char* portNo){ 

    struct hostent *hp = gethostbyname(hostname); 

    ... 

} 

保持返回:

21: warning: initialization makes pointer from integer without a cast 

有誰知道什麼是錯我的語法?

感謝

+0

如果埃文的回答不是什麼問題:向我們展示更多代碼,尤其是21號線是否是您向我們展示的代碼之一。 –

+0

你在代碼的頂部肯定有'#include '嗎? –

+0

@OliCharlesworth:netdb.h是你所需要的。 – 2011-11-29 22:34:50

回答

3

你忘了#include <netdb.h>。由於您沒有包含此文件,因此您正在運行「default int」規則。基本上,在C中,如果函數沒有原型,則假定爲:

int function_name();換句話說「返回int,需要未知數量的參數」。

正確地聲明函數原型(在這種情況下通過包含頭)將避免這種情況。

+0

謝謝。這固定了它。我的愚蠢錯誤。 – KWJ2104

0

我想你忘了包含netdb.h頭文件,以便編譯器對gethostbyname函數一無所知,並假定它返回整數。然後它投訴,因爲在這種情況下,你會將整數轉換爲指針。你需要包含一個頭文件來爲編譯器提供正確的類型信息。