Visual Studio尝试包括linux头文件,尽管if语句
Visual Studio trying to include linux headers despite if statement
我正在尝试创建一个健壮的头文件,将在windows和linux上编译而无需更改。为此,我在include中有一个if语句,看起来像
#if (!defined(__WINDOWS__))
#include <sys/time.h>
#include <unistd.h>
#include <pthread.h>
#endif
我遇到的问题与visual studio仍然试图包括这些头,尽管if语句导致错误,如
error C1083: Cannot open include file: 'sys/time.h'
是否有一种方法来解决这个问题,而不从头中删除所有的linux代码块?
__WINDOWS__
由windows.h
定义。这是一个圆。用这个代替:
#if defined(_WIN32)
# if defined(_WIN64)
/*64 bit windows*/
# else
/*32 bit windows*/
# endif
#endif
是的,_WIN32 是在64位windows上定义的。我不骗你。
相关文章:
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 生成文件缺少包含路径 尽管路径存在并已定义
- 每次都会重建多个程序的制作文件,尽管配方"all"被标记为虚假
- 缺少 .h 文件,尽管从库文件夹链接了 .so 文件
- 使用命名管道块的读取文件,尽管使用重叠
- 尽管使用-i标志,但仍未使用此类文件或目录
- 尽管文件指针正确,但在fclose()期间的segfault
- C++多个定义,尽管在多个文件中使用ifndef
- g++ 未定义的引用,尽管符号存在于 *.so 文件中
- 写入.ini文件 - SimpleIni SetValue 尽管看起来成功了,但什么也没做
- C++'Undefined reference to'错误,尽管包含路径中的头文件中存在函数定义
- 尽管包含正确的文件,但在此范围内未声明
- "生成"不会重新编译头文件更改。尽管包含 .d 依赖项文件
- 尽管使用了boost_NO_CXX11_SCOPED_ENUMS,但boost::文件系统出现未定义的引用错误
- ofStream: - 尽管文件创建了,但文本文件上没有输出
- 尽管包含头文件,但仍找不到嵌套命名空间
- fstream 没有打开文件,尽管一切看起来都很好
- C++:错误LNK1104文件..尽管存在库,但无法打开它
- MSBuild-无法打开包含文件(尽管已在include列表中列出)
- 在c++中使用了两个稍微不同的头文件(尽管是一个.lib文件),导致大量错误,但没有生成警告.如何预防呢?