我有一些这样的定义:
#define flag YES
#define prod YES
#define test NO
这些用于测试。
我有一段代码
BOOL testMode = flag || prod || test;
Xcode抱怨此消息:使用逻辑||使用常量操作数...使用按位
修复它但我正在做的操作是合乎逻辑的,而不是按位的。
如果3个状态中的一个为YES,我希望testMode为YES。
任何线索?
答案 0 :(得分:4)
以下代码在没有警告的情况下获得相同的结果。
BOOL testMode = flag | prod | test;
这可能是一个让你烦恼的问题......一个不必要的警告或使用按位|
运算符来进行什么是逻辑运算。该警告似乎旨在通过位字段错误地使用逻辑运算符来捕获人。当你试图设置第2位时,你不会不小心写bitField || 0x4
。
答案 1 :(得分:2)
我更喜欢这个:
BOOL testMode = (BOOL)flag || (BOOL)prod || (BOOL)test;
答案 2 :(得分:0)
警告消失:
#define flag true
#define prod true
#define test false