大佬教程收集整理的这篇文章主要介绍了objective-c – 枚举的非整数底层类型,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是有问题的代码:
typedef enum : git_reset_t { GTRepositoryResetTypeSoft = GIT_RESET_SOFT,GTRepositoryResetTypeMixed = GIT_RESET_MIXED,GTRepositoryResetTypeHard = GIT_RESET_HARD } GTRepositoryResetType;
我将git_reset_t更改为NSUInteger(typedef’d为unsigned long),并将其编译,但当然我不必更改库文件.
Objective-git在自己的项目中编译得很好,我找不到该项目和我的项目之间的编译器设置有任何显着差异.我能错过什么?
这是使用Xcode 4.5,使用Apple llvm 4.1进行编译.
更新:我错过的线索是错误只发生在.mm文件上,.m文件很好,所以底层的枚举类型在C中不起作用(即使我启用了C 11).作为一种解决方法,我为我在该文件中使用的一个objective-git类添加了一个假的最小@interface声明,因此我不必包含标题,但我仍然希望找到一个更清晰的解决方案.
@H_197_2@
typedef enum { GIT_RESET_SOFT = 1,/** Move the head to the given commit */ GIT_RESET_MIXED = 2,/** SOFT plus reset index to the commit */ GIT_RESET_HARD = 3,/** MIXED plus changes in working tree discarded */ } git_reset_t;
这是一种旧式枚举,其中int是底层类型.但它不是一个int,它是一个独特的类型.它不是完整的,它不能成为新式枚举的基础类型.
修复是使用typedef enum:int或者如果你可以使用C并希望是额外的说明文件,
typedef enum : std::underlying_type< git_reset_t >::type
我没试过,但你也可以在没有C的ObjC中试试这个:
typedef enum : __underlying_type( git_reset_t )@H_197_2@ @H_197_2@
以上是大佬教程为你收集整理的objective-c – 枚举的非整数底层类型全部内容,希望文章能够帮你解决objective-c – 枚举的非整数底层类型所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。