【问题标题】:Visual Studio trying to include linux headers despite if statement尽管有 if 语句,Visual Studio 仍试图包含 linux 头文件
【发布时间】:2014-03-13 15:54:20
【问题描述】:

我正在尝试创建一个健壮的头文件,它可以在 windows 和 linux 上编译而无需更改。为此,我的包含中有一个 if 语句,看起来像

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

尽管 if 语句导致错误,但 Visual Studio 仍然尝试包含这些标头时遇到问题,例如

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

有没有办法在不从标头中删除所有 linux 代码块的情况下解决此问题?

【问题讨论】:

    标签: c++ linux windows visual-studio-2010 compiler-errors


    【解决方案1】:

    __WINDOWS__windows.h 定义。所以你有一个循环。改用这个:

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

    是的,_WIN32 在 64 位窗口上定义的。我不骗你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      相关资源
      最近更新 更多