__builtin_constant_p
时间: 2023-05-01 22:03:02 浏览: 290
`__builtin_constant_p`是GCC编译器内置的预处理宏,用于判断一个参数是否为编译器常量。如果参数是编译器常量,则返回1,否则返回0。这个宏可以用来写出更加高效的代码,因为在编译时可以直接将常量替换为值。
相关问题
bluez __bluetooth_builtin
bluez是一个蓝牙协议栈,__bluetooth_builtin是bluez中的一个结构体,用于描述蓝牙插件。其中,__bluetooth_builtin_hciops是一个内置的蓝牙插件,而__bluetooth_builtin_ ## name则是一个宏定义,用于定义其他的蓝牙插件。这些插件可以通过动态加载的方式来扩展bluez的功能。
#define OP2(_1, _2, _op) (\ {\ typeof(_1) __1; typeof(_2) __2; (void)(&__1 == &__2);\ __builtin_constant_p(_1) ? \ (__builtin_constant_p(_2) ? _op(_1, _2) : ({__2 = _2; _op(_1, __2);})) : \ (__builtin_constant_p(_2) ? ({__1 = _1; _op(__1, _2);}) : ({__1 = _1; __2 = _2; _op(__1, __2);}));\ })
这也是一个宏定义,用于对两个参数进行二元运算。其中,_1和_2表示两个参数,_op表示二元运算符。该宏定义的作用是:如果其中一个参数是常量,则将其作为宏的值直接计算,否则将参数赋值给新定义的变量__1和__2,然后再进行运算。整个宏定义使用了GCC的内置函数__builtin_constant_p来判断参数是否是常量。最终返回运算结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)