我正在编写一个应用程序,我想在Mac,Windows和Linux上发布二进制文件。我有在Mac和Linux下编译的代码,但在Windows下,它没有。
这是因为Windows缺少strcasecmp。我已经阅读了一些关于如何创建某种标题来包装我的代码的内容,但我并不太了解这个概念。我只使用vim和make来处理我的Mac上的代码,但现在我正在尝试将它全部切换到Visual Studio。
当我在Windows上构建时,是否有某种方法可以将我的项目设置为包含Windows包装器标头,但是当我在Mac或Linux机器上构建时,省略它们?
这个问题让我头疼,我很感激任何建议!
答案 0 :(得分:7)
你可以做到
#ifdef WIN32
#include <windows_specific_header.h>
#else
#include <other_header.h>
还有一个特定于MS Visual Studio的宏:_MSC_VER,所以
#ifdef _MSC_VER
也可以在这里工作。
在windows.h中还有WINVER定义。
答案 1 :(得分:1)
配置我的项目以生成与平台无关的代码
这是一个奇怪的阶段,所以我不确定我是在回答正确的问题,但是这里有:
您必须编写与平台无关的代码。
做其中一项:
或
答案 2 :(得分:1)
Boost库旨在实现跨平台。特别是,如果你需要操纵字符串,你可能会找到你需要的东西。它将是跨平台的,而不必自己处理它。请参阅there以了解可用的内容。
答案 3 :(得分:0)
也许您可以考虑在Windows上使用MINGW32编译代码。