每天早晨叫醒你的不是闹钟,而是梦想

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  62 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 void error(int severity...)
{
   va_list ap;
   va_start(ap,severity);
   for(;;)
   {
      char* p=va_arg(ap,char*);
      if(p==0) break;
      cerr<<p<<' ';
   }
   va_end(ap);
   cerr<<'\n';
   if(severity) exit(severity);
}
    首先,通过调用va_start定义并初始化一个va_list,宏va_start以一个va_list的名字和函数的最后一个有名形参的名字作为参数。宏va_arg用户按顺序取出各个无名参数。在每次调用va_arg时,程序员都必须提供一个类型,va_arg假定这就是被传递的实际参数的类型,但一般说它并没有办法保证这一点。从一个使用过va_start的函数退出之前,必须调用一次va_end,这是因为va_start可能以某种形式修改了堆栈,这种修改可能导致返回无法完成,va_end能将有关的修改复原。
posted on 2011-04-14 22:39 沛沛 阅读(207) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理