令牌贴在C中

令牌贴在C中,第1张

概述看完约 VA_NARG后 我尝试使用宏根据C中的参数数量实现函数重载. 现在的问题是: void hello1(char *s) { ... }void hello2(char *s, char *t) { ... }// PP_NARG(...) macro returns number of arguments :ref to link above // does n 看完约 VA_NARG后

我尝试使用宏根据C中的参数数量实现函数重载.
现在的问题是:

voID hello1(char *s) { ... }voID hello2(char *s,char *t) { ... }// PP_NARG(...)           macro returns number of arguments :ref to link above // does not work#define hello(...)         hello ## PP_NARG(__VA_ARGS__)  int main(voID){   hello("hi");   // call hello1("hi");   hello("foo","bar"); // call hello2("foo","bar");   return 0;}

我从C-faq上读过this.但仍然无法让它工作……

解决方法 这是因为宏的评估规则.您必须定义某种辅助宏,它将数字作为标记接收:
#define HELLO_1(N,...)         hello ## N#define HELLO_0(N,...)         HELLO_1(N,__VARGS__)#define HELLO(...)         HELLO_0(PP_NARG(__VA_ARGS__),__VARGS__)

或者.您还可以浏览一下P99文档的预发布.这将为您提供更加舒适的宏工具来直接执行此 *** 作.

总结

以上是内存溢出为你收集整理的令牌贴在C中全部内容,希望文章能够帮你解决令牌贴在C中所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/langs/1243993.html

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

发表评论

登录后才能评论

评论列表(0条)

保存