【发布时间】:2013-10-03 19:07:35
【问题描述】:
我正在开发一个插件,我需要在其中 #include 一个头文件(假设是 some_file.h),其中又包含 environ.h。现在,当我构建我的插件时,构建失败,environ.h 文件和其他一些依赖文件中有一些错误。这是来自 environ.h 的代码示例,其中发生了错误:
#ifndef PLATFORM
#ifdef WIN_ENV
#define PLATFORM "winpltfm.h"
#elif __OS2__
#define PLATFORM "os2pltfm.h"
#elif defined(unix) || defined(__unix)
#define PLATFORM "UnixPlatform.h"
#else
#error You must define the PLATFORM macro <------- Error-1
#endif
#endif
#include PLATFORM <------- Error-2
Error-1 是:#error you must define the platform macro,Error-2 很容易猜到:Expected <filename> or "filename"。
奇怪的是,包含some_file.h 的其他一些插件工作正常,即构建成功。这让我觉得肯定有一些构建设置可能会有所不同。
任何人都可以建议在这种情况下应该做什么来从environ.h 头文件中删除错误吗?
注意:我正在 Xcode 中开发 MAC OS X。
【问题讨论】:
-
__OS2__没有得到定义。它是否期望由编译器定义?对于测试,您可以在#include "environ.h"之前添加#define __OS2__,然后查看该翻译单元的问题。 -
Simple
#define __OS2__开始抱怨更多。所以,我在包含some_file.h之前添加了#define __OS2__ 1。现在,它显示os2pltfm.h file not found。这是 OSX 的标准文件吗? -
您缺少围绕
__OS2__的定义,这就是为什么将其定义为1的原因。我对 Xcode 不够熟悉,无法推荐解决方案,但您似乎需要将 os2pltfm.h 的路径传递给您的编译器。也是__OS2__的定义开关。 -
“切换为
__OS2__”是什么意思?
标签: c++ macos macros cross-platform