最近發現
winsock2.h
標頭檔案與
windows.h
標頭檔案在同時包含的時候會有問題,編譯時會產生很多態別重複定義的錯誤。
[
原因分析
]
主要原因是因為
中包含了
標頭檔案,
由於其版本的不同(
winsock.h
支援socket 1.1
),導致出現上述的錯誤。
中相關**如下:
#ifndef win32_lean_and_mean
#include
#include
#include
........
#ifndef _mac
#include
#include
#endif
.......
#include
#endif
#endif
[
解決方案
]
方案(1)
首先包含
winsock2.h
,然後再包括
windows.h
,要注意包含的順序。 在
windows.h
中,包含了
winsock.h
(winsock.h
支援socket 1.1
)。因此首先包含
windows.h
,然後再包含
winsock2.h
,顯然會出現問題。
方案(2)
由以上**可以看出如果在沒有定義
win32_lean_and_mean
巨集的大前 下
windows.h
有可能包含
winsock.h
標頭檔案,因此我們得出乙個很簡單
的解決方法就是在包含
之前定義
win32_lean_and_mean巨集,
如 下所示:
#define win32_lean_and_mean
#include
標頭檔案包含問題
今天在寫 時,用到了五六個資料夾,但是在包含標頭檔案的時候不停的在報錯,因此特地重溫了下標頭檔案的包含 標頭檔案包含符號分為兩種 第一種為 先在當前工程儲存目錄下尋找,再去系統存放目錄取尋找,常用於自定義標頭檔案 第二種為 直接在系統目錄下尋找,未找到則返回錯誤,不會在當前目錄下尋找 因此,當我們需...
標頭檔案互相包含問題
當我們有兩個類的標頭檔案互相包含時,如果出現乙個類中有另乙個類的物件時,vs就會報這樣的錯error c4430 缺少型別說明符 假定為 int。test2.h ifndef test2 h define test2 h include include test1.h using namespace...
標頭檔案路徑包含問題
標頭檔案包含兩種,系統標頭檔案和自定義標頭檔案,系統標頭檔案不說了,格式統一,自定義標頭檔案在包含的時候要注意路徑,其實是標頭檔案與主檔案的相對位置關係的問題。ps 另外,linux和windows下也有所區別。舉4個例子,應該就能看明白了。一.這種情況下,在main.c中包含標頭檔案如下 incl...