有關同時包含與標頭檔案的問題

2021-06-16 05:41:09 字數 1119 閱讀 8440

最近發現

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...