gpt4 book ai didi

android - 这个 DEFINed 常量的值是多少?

转载 作者:行者123 更新时间:2023-11-30 15:07:52 25 4
gpt4 key购买 nike

我正在查看一些 Android 蓝牙源代码,我注意到这些定义:

/* Non Connectable Adv state is supported. 0x0000000000000001 */
#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK 0x01
#define HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF 0
#define HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK)

前两个非常明显,但是第三个的值是多少,(x)有什么作用?

最佳答案

大多数宏都是简单的文本替换,在代码中出现的位置进行扩展。所以第三个

#define HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK)

替换它包含的两个宏,扩展为:

((x)[0] & 0x01)

(x) 位于括号中,以确保传递给宏的任何参数都优先于索引。例如,如果代码是

char str[] = "123";
int i = HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(str + 1);

没有括号括住参数x,宏将扩展为

(str + 1[0] & 0x01)

这会导致错误。支架就可以了

((str + 1)[0] & 0x01)

这会起作用。

关于android - 这个 DEFINed 常量的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com