关于格式化输出

hoohoo2002   2010-6-18 09:29 楼主
兄弟我要在单片机上实现结构化输出,但总达不到效果。对比了VC上和KEIL51上的stdarg上的代码,有点让我迷惑
VC:
  #define _INTSIZEOF(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )

  #define va_start(ap,v)  ( ap = (va_list)&v + _INTSIZEOF(v) )
  #define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
  #define va_end(ap)      ( ap = (va_list)0 )
  #endif


KEIL51:
  #define va_start(ap,v) ap = (va_list)&v + sizeof(v)
  #define va_arg(ap,t) (((t *)ap)++[0])
  #define va_end(ap)
  
请问各位大侠,这两段代码的具体功用是什么,谢谢!

回复评论 (2)

具体情况是:我执行了一次va_arg(ap,t)时,ap的值总是0xff,这让我有些费解
点赞  2010-6-18 09:32
初次发帖,谢谢
点赞  2010-6-18 10:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复