gpt4 book ai didi

c - printk中的"##",##是什么意思

转载 作者:太空狗 更新时间:2023-10-29 17:23:49 26 4
gpt4 key购买 nike

#define ext4_debug(f, a...)                     \
do { \
printk(KERN_DEBUG "EXT4-fs DEBUG (%s, %d): %s:", \
__FILE__, __LINE__, __func__); \
printk(KERN_DEBUG f, ## a); \
} while (0)

我不明白的是这个

printk(KERN_DEBUG f, ## a); 

谁能帮我理解这一行中的##是什么?谢谢

最佳答案

它是可变参数宏(具有多个可变参数的宏)的标记。它的 gcc 特定指令允许 0 个或多个参数作为输入,在 ext4_debug() 中的 f 之后。这意味着,f 参数是必需的,a 可能存在也可能不存在。

这与 printf(const char *fmt,...) 相同,其中,fmt 是必需的,其他参数是可选的,并且取决于 fmt 。请参阅本文档中的最后一条语句:http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html

关于c - printk中的"##",##是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225921/

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