C 定义带有 "or" 运算符混淆的宏
C Define macro with "or" operator confusion
这里一头雾水
#if !defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES)
好像在 arm 上会被定义,看这里
但所有构建都有
所以它应该在手臂和其他方面都是正确的,即 x86_64,对吗?
只有第一个条件和第二个条件不满足时才不会定义,意思是没有EAS_NATIVE_KERNEL标志和没有_16_BIT_SAMPLES标志?
!defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES)
仅在定义了 NATIVE_EAS_KERNEL
且未定义 _16_BIT_SAMPLES
时才为假(当 defined(NATIVE_EAS_KERNEL) && !defined(_16_BIT_SAMPLES)
为真时)。
NATIVE_EAS_KERNEL
_16_BIT_SAMPLES
!defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES)
Not defined
Not defined
True
Not defined
Defined
True
Defined
Not defined
False
Defined
Defined
True
这里一头雾水
#if !defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES)
好像在 arm 上会被定义,看这里
但所有构建都有
所以它应该在手臂和其他方面都是正确的,即 x86_64,对吗?
只有第一个条件和第二个条件不满足时才不会定义,意思是没有EAS_NATIVE_KERNEL标志和没有_16_BIT_SAMPLES标志?
!defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES)
仅在定义了 NATIVE_EAS_KERNEL
且未定义 _16_BIT_SAMPLES
时才为假(当 defined(NATIVE_EAS_KERNEL) && !defined(_16_BIT_SAMPLES)
为真时)。
NATIVE_EAS_KERNEL |
_16_BIT_SAMPLES |
!defined(NATIVE_EAS_KERNEL) || defined(_16_BIT_SAMPLES) |
---|---|---|
Not defined | Not defined | True |
Not defined | Defined | True |
Defined | Not defined | False |
Defined | Defined | True |