gpt4 book ai didi

c - 为什么函数 printk() 不使用逗号分隔参数?

转载 作者:IT王子 更新时间:2023-10-29 00:23:23 26 4
gpt4 key购买 nike

printk 调用示例:

printk(KERN_INFO "Log message.\n");

也许这个问题更多地是关于 C 语言的,因为我从来没有在 C 语言中看到过没有逗号分隔参数的函数。

这是如何运作的?编译器如何处理这些信息?由于日志级别是一个整数,而消息是一个指向字符数组的指针,因此必须将它们分开传递。

最佳答案

printk() 函数只接受一个const char* 参数。 KERN_INFO 宏扩展为 "\001""6",产生:

printk("\001" "6" "Log message.\n");

C 词法分析器连接相邻的字符串文字标记,这意味着以上转换为:

printk("\0016Log message.\n");

关于c - 为什么函数 printk() 不使用逗号分隔参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492059/

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