我的工作目標,整合的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