我正在努力将objective-git集成到我的项目中,但是当我在我的源代码中包含它们的标题时,我在他们的几个枚举声明中得到了这些错误:
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'd to unsigned long),这让它可以编译,但当然我宁愿不必更改库文件。
Objective-git 在它自己的项目中编译得很好,我在该项目和我的项目之间的编译器设置中找不到任何显着差异。我会错过什么?
这是 Xcode 4.5,使用 Apple llvm 4.1 编译。
更新:我错过的线索是错误只发生在 .mm 文件上,而 .m 文件很好,所以底层枚举类型在 C++ 中不起作用(即使我启用了 C++11)。作为一种解决方法,我为我在该文件中使用的一个objective-git 类放置了一个虚假的最小@interface 声明,因此我不必包含标题,但我仍然想找到一个更干净的解决方案。