具体参考:c/c++宏函数的定义与使用(宏定义函数)(macro definition)_c++宏定义函数-CSDN博客
##的妙用:示例代码如下
#define V4L_INT_OPT(vid, var, desc) \ //带参数的宏(假参数,不是真正的参数,只是替换而已)
if (settings->var##_set) { \
V4L_OPT_SET(vid, var, desc) \
} // 里面## 有什么作用呢?
在C预处理器中,"##" 是一个运算符,用于将两个符号合并成一个符号。在你提供的代码中,"##" 用于将变量名 "var" 和 "_set" 合并成一个新的符号,然后在条件判断和宏调用中使用这个合并后的符号。
例如,如果 "var" 被替换为 "example",那么在预处理时,"settings->var##_set" 将被展开为 "settings->example_set"。这样可以根据变量名动态地生成新的符号,使代码更加灵活和通用。