在C中使用由iOS本机库公开的C位掩码(匿名枚举)

在C中使用由iOS本机库公开的C位掩码(匿名枚举),第1张

概述Cocoa使用typedef-ed匿名枚举位域. 我正在使用Objective-C,以获得更好的&更差.在.mm文件中,我需要将2位(按位包含OR)分配给这些枚举位域类型之一的类型的属性. libc编译器不会拥有它,因为它不会为该typedef-ed匿名枚举位域的属性提供类型为int的rvalue. 据我所知,C& C之间存在枚举的大小差异. C .那么这种情况的解决方法是什么? 执行作业的我的行 Cocoa使用typedef-ed匿名枚举位域.

我正在使用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位掩码(匿名枚举)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1009270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存