2015-08-14 82 views
0

我正在編寫某人的其他代碼,這是爲某些套接字編程編寫的。這個項目有以下兩個文件。錯誤C2373:'inet_addr':重新定義;不同類型的修飾符

SOCKUTIL.H

#if !defined(SOCKUTIL_H) 
#define SOCKUTIL_H 

unsigned long inet_addr(const char *sIp); 

unsigned short htons(unsigned short port); 
#endif 

sockUtil.cpp

#include "stdafx.h" 
#include "sockutil.h" 
#include <stdlib.h> 
#include <string.h> 

unsigned long inet_addr(const char *sIp) 
{ 
    int    octets[4]; 
    int    i; 
    const char  *auxCad = sIp; 
    unsigned long lIp = 0; 

    //we extract each octet of the ip address 
    //atoi will get characters until it found a non numeric character(in our case '.') 
    for(i = 0; i < 4; i++) 
    { 
     octets[i] = atoi(auxCad); 

     if(octets[i] < 0 || octets[i] > 255) 
     { 
      return(0); 
     } 

     lIp |= (octets[i] << (i * 8)); 

     //update auxCad to point to the next octet 
     auxCad = strchr(auxCad, '.'); 

     if(auxCad == NULL && i != 3) 
     { 
      return(0); 
     } 

     auxCad++; 
    } 

    return(lIp); 
} 

unsigned short htons(unsigned short port) 
{ 
    unsigned short portRet; 

    portRet = ((port << 8) | (port >> 8)); 

    return(portRet); 
} 

該項目最初是在VC6開發,當我在VS2013打開它時,Visual Studio將其轉換。但是當我建立它,那麼它給出以下錯誤。

錯誤C2373:'inet_addr':重新定義;不同類型的修飾符

錯誤C2373:'htons':重新定義;不同類型的修飾符

我試圖找到解決方案,但沒有得到該怎麼做。我對此沒有太多的瞭解。

編輯:此代碼不使用#include Winsock2.h。我查了幾個可用的在線解決方案,聲稱這個庫是重新定義的原因,但在這種情況下這不是真的。

回答

2

這些功能在最近版本的Visual Studio已經爲你定義(見:MSDN) - 你可以從你的項目中刪除這些文件,並刪除所有出現:

#include "sockutil.h" 
+0

謝謝,它幫助。 –

相關問題