带有特殊变量参数的C宏

带有特殊变量参数的C宏,第1张

概述我总是写下面的代码用于调试目的: printf("%s:%d this is a string %s int %d",__FUNCTION__,__LINE__,strval,intval); 现在因为总是使用第一部分(FUNCTION,LINE),所以我希望创建一个宏来执行它并且只是附加其他调试字符串. 也许看起来像: #define MYPRINT(args...) printf("%s:%d 我总是写下面的代码用于调试目的:
printf("%s:%d this is a string %s int %d",__FUNCTION__,__liNE__,strval,intval);

现在因为总是使用第一部分(FUNCTION,liNE),所以我希望创建一个宏来执行它并且只是附加其他调试字符串.

也许看起来像:

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

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

澄清不重复this one

这是不同的,因为我希望在print命令中添加一些新字段.实际上这里的答案很棒,感谢所有人的帮助!

解决方法 如果你想单独调用printf(),你的MYPRINT需要知道格式字符串.你可以尝试这样的东西,只要格式字符串是文字:
#define MYPRINT(FMT,...) printf("%s:%d " FMT,##__VA_ARGS__)

##是一个GCC(可能是其他)编译器扩展,在__VA_ARGS__实际为空的情况下吞下逗号.如果您的编译器不支持它,请将其关闭.

总结

以上是内存溢出为你收集整理的带有特殊变量参数的C宏全部内容,希望文章能够帮你解决带有特殊变量参数的C宏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存