我的工作目标,整合的git到我的项目,但是当我包括我的消息来源他们的头,我得到他们几个enum声明的这些错误:非整数基础类型,枚举
objective-git/Classes/GTRepository.h:57:16: Non-integral type 'git_reset_t' is an invalid underlying type
这里是有问题的代码:
typedef enum : git_reset_t {
GTRepositoryResetTypeSoft = GIT_RESET_SOFT,
GTRepositoryResetTypeMixed = GIT_RESET_MIXED,
GTRepositoryResetTypeHard = GIT_RESET_HARD
} GTRepositoryResetType;
我改变git_reset_t
到NSUInteger
(typedef定义联合国签署长),并得到它编译,但当然,我宁愿不必更改库文件。
Objective-git在自己的项目中编译得很好,在该项目和我的项目之间的编译器设置中找不到任何重大差异。我可能会错过什么?
这是与Xcode 4.5,编译苹果llvm 4.1。
更新:我错过了线索是,错误只发生在一个.mm文件,.m文件都很好,所以在某种程度上基础枚举类型不会用C++工作(即使启用C + +11)。作为一种解决方法,我为该文件中使用的一个objective-git类放了一个假的最小@interface声明,所以我不必包含头文件,但是我仍然希望找到一个更清晰的解决方案。
请注意,这依赖于Clang + ObjC特定的扩展:http://clang.llvm.org/docs/LanguageExtensions.html#enumerations-with-a-fixed-underlying-type – Potatoswatter 2013-02-27 15:52:41