免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2687 | 回复: 4
打印 上一主题 下一主题

[函数] 请教可变参数问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-05 17:56 |只看该作者 |倒序浏览
我希望在一个可变参数函数中调用另一个可变参数的函数,
将参数直接传递下去,应该如何传递呢?

  1. #include "stdio.h"
  2. #include "stdarg.h"
  3. #include "memory.h"


  4. #define MAX_LEN 100

  5. char msg[MAX_LEN];


  6. void printL1(const char  *fmt, ...)
  7. {
  8.     va_list        args;
  9.     memset(msg,0,sizeof(msg));

  10. #if 0    // 这个方法是不行的
  11.     va_start(args, fmt);
  12.     printf(args, fmt);
  13. #else   // 这个是可以的,但是不希望采用这种方法,还有其他办法没?
  14.     va_start(args, fmt);
  15.     _vsnprintf(&msg[0],MAX_LEN-1,(char *)fmt,args);
  16.     printf("%s",msg);
  17. #endif
  18.     va_end(args);
  19. }


  20. void main(void)
  21. {
  22.     int para1 = 1024;
  23.     int para2 = 512;
  24.     int para3 = 0;

  25.     printL1("para1:%d\npara2:%d\npara3:%d\n ",para1,para2,para3);        
  26. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-06-06 09:23 |只看该作者
函数不行,宏可以(VC6除外)

论坛徽章:
0
3 [报告]
发表于 2011-06-06 14:44 |只看该作者
果然还是不行啊
谢啦~

论坛徽章:
0
4 [报告]
发表于 2011-06-06 15:35 |只看该作者
要么自己写汇编来自己将参数压栈,这样还不如写宏来的简单

论坛徽章:
0
5 [报告]
发表于 2011-06-07 12:46 |只看该作者
呵呵,是啊~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP