JUST DO IT ~

          我只想當(dāng)個程序員

          windows.h socket2 沖突


          好像inlucde windows 會默認(rèn)使用winsocket1 ,我們現(xiàn)在寫程序都是使用socket2 . 編譯會沖突.

          1.種方法  
          #define WIN32_LEAN_AND_MEAN
          放在windows.h 之前.

          2. 先引入socket2.h文件.

          3. 項目 -> 屬性 -> C/C++ -> 預(yù)處理器 -> 預(yù)處理器定義

          在其中添加 : WIN32_LEAN_AND_MEAN


          WIN32_LEAN_AND_MEAN: Windows 頭文件使用此符號來排除很少使用的頭文件。請參考 Windows.H,以確定當(dāng)定義了此符號時,將排除的文件。由于 MFC 定義 WIN32_LEAN_AND_MEAN,所有 MFC 項目自動都使用它。


          下面具體分析一下問題是怎么發(fā)生的。

          參考
          http://support.microsoft.com/kb/166474/zh-cn
          http://tieba.baidu.com/p/705524374

          錯誤情形1:我們在自己的工程中先包含winsock2.h再包含windows.h,如果WIN32_LEAN_AND_MEAN未定義且 _WIN32_WINNT大于或等于0x400,那么windows.h會在winsock2.h開頭被自動引入,而windows.h又會自動引入 mswsock.h,此時,mswsock.h里所用的socket類型還尚未定義,因此會出現(xiàn)類型未定義錯誤。

          錯誤情形2:先包含 windows.h再包含winsock2.h,如果WIN32_LEAN_AND_MEAN未定義且_WIN32_WINNT未定義或者其版本號小于 0x400,那么windows.h會自動導(dǎo)入舊有的winsock.h,這樣再當(dāng)winsock2.h被包含時便會引起重定義。

          這里要說明的是,宏WIN32_LEAN_AND_MEAN的作用是減小win32頭文件尺寸以加快編譯速度,一般由AppWizard在stdafx.h中自動定義。_WIN32_WINNT的作用是開啟高版本操作系統(tǒng)下的特殊函數(shù),比如要使用可等待定時器(WaitableTimer),就得要求 _WIN32_WINNT的值大于或等于0x400。因此,如果你沒有遇到上述兩個問題,很可能是你沒有在這些條件下進(jìn)行網(wǎng)絡(luò)編程。
          VC_EXTRALEAN 和WIN32_LEAN_AND_MEAN 用于排除Windows 標(biāo)頭在很少 使用的服務(wù)

          posted on 2015-01-04 15:16 小高 閱讀(911) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2015年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關(guān)注的blog

          手冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 光山县| 安国市| 奉节县| 洛川县| 盐亭县| 芜湖县| 广宁县| 黎城县| 涡阳县| 德兴市| 胶南市| 东阿县| 彭山县| 罗平县| 咸阳市| 西安市| 永州市| 武穴市| 卢氏县| 广东省| 奉节县| 旌德县| 陇西县| 天全县| 正蓝旗| 绵竹市| 桦南县| 揭东县| 丰镇市| 宜良县| 长治市| 黄冈市| 威信县| 宁河县| 大连市| 沂水县| 车险| 额尔古纳市| 江永县| 长宁县| 韶关市|