尽管if语句,Visual Studio试图包含linux头文件

JME*_*JME 2 c++ linux windows compiler-errors visual-studio-2010

我试图创建一个强大的头文件,将在Windows和Linux上编译而无需更改.为此,我在我的包含中有一个if语句

#if (!defined(__WINDOWS__))
#include <sys/time.h>
#include <unistd.h>
#include <pthread.h>
#endif
Run Code Online (Sandbox Code Playgroud)

尽管if语句导致错误,我仍然遇到Visual Studio仍然试图包含这些标题的问题

error C1083: Cannot open include file: 'sys/time.h'
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,而无需从头文件中删除所有linux代码块?

Bat*_*eba 6

__WINDOWS__由...定义windows.h.所以你有一个循环.请改用:

#if defined(_WIN32)
#   if defined(_WIN64)
        /*64 bit windows*/
#   else
        /*32 bit windows*/
#   endif
#endif
Run Code Online (Sandbox Code Playgroud)

是的,_WIN32 在64位窗口上定义的.我没骗你.