Bee*_*and 10 c++ visual-studio-2010
我将第三方标题和源文件包含到我的项目中.
在标题的顶部有这样的:
#if defined(WIN32) || defined(WIN16)
#ifndef MSDOS
#define MSDOS
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
#ifndef MSDOS
#include <unistd.h>
#endif
#include "des.h"
Run Code Online (Sandbox Code Playgroud)
问题是#if定义(WIN32)失败并且在尝试#include unistd.h时编译失败,我不想这样做.
我有第三方项目使用此头文件,即WIN32已定义,它不会尝试包含在Visual Studio中我在"WIN32"上执行"转到定义",并在WinDefs.h中采用以下定义.
#define WIN32
Run Code Online (Sandbox Code Playgroud)
我不确定这是从哪个获取WIN32定义,因为第三方项目似乎不包括"WinDefs.h".
所以我的问题是,如何在我当前的新项目中定义WIN32?
取决于您的项目设置.WIN32是在windows头文件中定义的,但你也可以将它传递给编译器(例如gcc的"-DWIN32").试一试,看它是否编译.
Visual Studio具有内置的定义_WIN32.mingw-gcc内置了WIN32和_WIN32,因此该项目很可能使用gcc进行测试.你可以补充一下
#if defined(_WIN32) && !defined(WIN32)
#define WIN32
#endif
Run Code Online (Sandbox Code Playgroud)
或者只是将一个-DWIN32添加到CFLAGS.
检查您的包含.我猜测第三方标题包含在windows.h之前.所以,在你的main.cpp中或者应该是相同的
#include <windows.h> // this will also include windefs.h
#include <thirdParty.h>
Run Code Online (Sandbox Code Playgroud)
而不是相反.
希望有所帮助.