我正在使用Objective-C,以获得更好的&更差.在.mm文件中,我需要将2位(按位包含OR)分配给这些枚举位域类型之一的类型的属性. libc编译器不会拥有它,因为它不会为该typedef-ed匿名枚举位域的属性提供类型为int的rvalue.
据我所知,C& C之间存在枚举的大小差异. C .那么这种情况的解决方法是什么?
执行作业的我的行类似于:
uiSwipeRightDownRecogniser.direction = Right | Down;
位域的定义类似于:
typedef enum { Right = 1 << 0,left = 1 << 1,Up = 1 << 2,Down = 1 << 3 } UISwipeDirection;
错误是:
无法使用类型为’int’的rvalue初始化’UISwipeDirection’类型的参数
这种赋值在.m文件中工作,但不是.mm.
编译器是Apple的LLVM 3.0(使用libc).
解决方法 只需使用static_cast转换它:uiSwipeRightDownRecogniser.direction = static_cast<UISwipeDirection>(Right | Down);总结
以上是内存溢出为你收集整理的在C中使用由iOS本机库公开的C位掩码(匿名枚举)全部内容,希望文章能够帮你解决在C中使用由iOS本机库公开的C位掩码(匿名枚举)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)