如何配置项目以生成与平台无关的代码?

sam*_*moz 3 c++ cross-platform

我正在编写一个应用程序,我想在Mac,Windows和Linux上发布二进制文件.我有在Mac和Linux下编译的代码,但在Windows下,它没有.

这是因为Windows缺少strcasecmp.我已经阅读了一些关于如何创建某种标题来包装我的代码的内容,但我并不太了解这个概念.我只使用vim和make来处理我的Mac上的代码,但现在我正在尝试将它全部切换到Visual Studio.

当我在Windows上构建时,是否有某些方法可以将我的项目设置为包含Windows包装器标头,但是当我在Mac或Linux机器上构建时,省略它们?

这个问题真让我头疼,我很感激任何建议!

PaV*_*PaV 7

你可以做到

#ifdef WIN32
#include <windows_specific_header.h>
#else
#include <other_header.h>
Run Code Online (Sandbox Code Playgroud)

还有一个特定于MS Visual Studio的宏:_MSC_VER,所以

#ifdef _MSC_VER
Run Code Online (Sandbox Code Playgroud)

也会在这里工作.

在windows.h中还有WINVER定义.