2014-03-13 17 views
2

我正在嘗試創建一個健壯的頭文件,它將在Windows和Linux上編譯而不需要更改。爲此我有一個if語句在我包括看起來像儘管if語句試圖包含linux頭文件的Visual Studio

#if (!defined(__WINDOWS__)) 
#include <sys/time.h> 
#include <unistd.h> 
#include <pthread.h> 
#endif 

我有Visual Studio的問題仍然試圖包括這些頭,儘管導致這樣的錯誤

error C1083: Cannot open include file: 'sys/time.h' 

是if語句有沒有辦法解決這個問題,而無需從頭中刪除所有的linux代碼塊?

回答

6

__WINDOWS__windows.h定義。所以你有一個循環。使用這個來代替:

#if defined(_WIN32) 
# if defined(_WIN64) 
     /*64 bit windows*/ 
# else 
     /*32 bit windows*/ 
# endif 
#endif 

是,_WIN32 是在64位Windows定義的。我沒有騙你。