回覆列表
  • 1 # lanfengz3

    凡在Windows平臺下用C++做網路開發很多時候都會同時包含這兩個標頭檔案,如若順序不當(windows.h先於winsock2.h)就會出現很多莫名其妙的錯誤。諸如:

    警告 4 warning C4005: “AF_IPX”: 宏重定義 c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 91

    警告 5 warning C4005: “AF_MAX”: 宏重定義 c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 127

    初看到如此一堆的錯誤委實不爽,但是隻要將二者的包含順序調換一下問題就會解決,原因參見下面那個連結。另外,上述問題不僅影響直接包含二者的檔案,還影響間接包含的情形。比如,a.h包含了windows.h,b.h包含了winsock2.h,如果在c.h當中要引用a.h和b.h,那麼正確的順序應當是b.h先於a.h。當然,實踐當中有時很難找到究竟是哪兩個檔案順序不對了,終極的解決辦法是,在當前工程(就是編譯不過的這個工程)所有include語句最前面加上#include

  • 中秋節和大豐收的關聯?
  • 天地有情英文主題曲?