gpt4 book ai didi

具有特殊可变参数的 C 宏

转载 作者:太空狗 更新时间:2023-10-29 17:08:40 25 4
gpt4 key购买 nike

为了调试目的,我总是写下面的代码:

printf("%s:%d this is a string %s int %d",__FUNCTION__,__LINE__,strval,intval);

现在由于第一部分 (FUNCTION,LINE) 总是被使用,所以我希望创建一个宏来完成它并附加其他调试字符串。

也许看起来像:

#define MYPRINT(args...) printf("%s:%d",__FUNCTION__,__LINE__);printf(##args)

但我希望使用一个语句而不是上面的两个!可能吗?

澄清不重复this one

这是不同的,因为我想在打印命令中添加一些新字段。实际上这里的答案很棒,感谢大家的帮助!

最佳答案

如果您想要对 printf() 进行一次调用,则您的 MYPRINT 需要知道格式字符串。你可以尝试这样的事情,只要格式字符串是文字:

#define MYPRINT(FMT, ...) printf("%s:%d " FMT, __FUNCTION__, __LINE__, ##__VA_ARGS__)

## 是一个 GCC(也许还有其他)编译器扩展,它在 __VA_ARGS__ 实际上是空的情况下吞下了逗号。如果您的编译器不支持它,请将其关闭。

关于具有特殊可变参数的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782959/

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