2012-07-15 73 views
10

我正在編譯Visual C++ 2010中的項目,但我在Winsock重新定義方面遇到問題。Winsock重新定義錯誤

首先我得到:

syntax error : identifier 'SOCKADDR_STORAGE' 

但是,如果我有Winsock的或Winsock2的或ws2tcpip我得到許多錯誤,像這樣的:

error C2011: 'sockaddr' : 'struct' type redefinition 
error C2011: 'WSAData' : 'struct' type redefinition 
error C2011: 'linger' : 'struct' type redefinition 
+0

你可以發佈代碼示例嗎?還可以嘗試添加'#define WIN32_LEAN_AND_MEAN' – ctor 2012-07-15 21:03:31

+0

讓我們看看違規模塊中的#include塊。 – wallyk 2012-07-15 21:03:52

+0

我沒有任何花哨的包括,我的這些//#包括 的#include //#包括我必須把它們列入幾個.cpp文件。 – Cooker 2012-07-15 21:06:30

回答

20

你的問題是,包括Windows.h,你是也已經包括winsock.h。正是在這裏,你的問題就出現爲包括winsock2.hws2tcpip.h將嘗試重新定義一些定義的winsock.h

通過您Windows.h之前使用#define WIN32_LEAN_AND_MEAN包括您在內的很多附帶Windows.h

多餘的東西停止編譯