首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成插件时出现宏未定义错误

生成插件时出现宏未定义错误
EN

Stack Overflow用户
提问于 2013-10-04 03:07:35
回答 1查看 303关注 0票数 0

我正在开发一个插件,在这个插件中我需要#include一个头文件(假设是some_file.h),而这个头文件又包含了environ.h。现在,当我构建我的插件时,构建失败了,在environ.h文件和其他一些依赖文件中出现了一些错误。以下是发生错误的environ.h中的代码示例:

代码语言:javascript
复制
#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

错误-1是:#error you must define the platform macro,错误-2很容易猜测:Expected <filename> or "filename"

奇怪的是,包含some_file.h的其他一些插件运行得很好,即构建成功。这让我觉得一定有一些不同的构建设置。

有人能建议在这种情况下应该做些什么来消除environ.h头文件中的错误吗?

注意:我正在Xcode的MAC上工作。

EN

回答 1

Stack Overflow用户

发布于 2013-10-04 03:51:19

我继续我的评论到这个答案,所以它更容易解释……

首先是,而不是#elif __OS2__,它应该是#elif defined(__OS2__)这就是为什么在你的测试中#define __OS2__不能工作,但#define __OS2__ 1能。

编辑:从你的评论中你注意到环境.h是一个标准文件,但是他们检查OS2定义的方式似乎很奇怪。他们强迫它被定义为一个值,而不是仅仅被定义。

第二个,从您的测试中可以明显看出,编译器没有为您定义__OS2__,并且可能有另一个头文件,但是当前没有包含在获取some_file.h的转换单元中。如果已确认OS2未由项目中的其他头文件定义,则可以按照此SO answer提供的以下步骤为预处理器定义宏

您需要更改的构建设置称为“预处理器宏”,它可以在“项目设置”窗格的“构建设置”选项卡中找到(使用搜索框进行查找)。在Project Settings窗格的左侧依次选择每个目标,然后修改Preprocessor Macros设置。

该设置被指定为'foo‘或'foo=bar’形式的预处理器宏的空格分隔列表。

Third,似乎编译器设置中的os2pltfm.h包含路径错误或缺失。

您可以按照此SO answer中给出的说明包括该文件

您所要做的就是将-I标志添加到"Other C Flags“下的构建设置中

因此在目标构建设置中搜索"Other C Flags“并添加-i/path-to-include-to-

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19167262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档