我正在編寫套接字編程..我的代碼按照我希望的方式執行,我可以使用它。但它給我一個編譯警告。警告:從指針投射到不同大小的整數
我編譯使用
gcc server1.c -o server1 -lpthread
我得到警告
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
這個錯誤出現以下代碼
int newsockfd;
newsockfd = (int)newsockfdd; //this line
而且我使用newsockfdd(這是INT )在下面的代碼塊中:
if (pthread_create(&threadID[i++], NULL, serverThread, (void *)(intptr_t)newsockfdd) != 0)
{
perror("Thread create error");
}
正如你可能會說,代碼寫得不好(我正在努力使它更好)。我知道這個警告是因爲與int的大小有關。但我真的不知道如何解決它。我把(使用intptr_t)在聲明在pthread_create之前,它顯示在該行警告,但那個時候的警告是
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
好像應該有一個簡單的解決這個?但我找不到它。我使用Ubuntu 64位。這是警告的原因嗎?
嗯,考慮到你在從'(void *)newsockfdd'獲得''void''newsockfdd'之前的警告,看起來不太可能''從指針轉換爲不同大小的整數警告實際上來自指定行。 –
除非......'serverThread'和'newsockfdd'中的那條線是'serverThread'接收的參數嗎?那麼它會很清楚。 –
@DanielFischer是的..我把它作爲參數傳遞給serverThread。像這樣:void * serverThread(void * newsockfdd)。那麼,什麼是錯的? – user1825770