请问va_arg(ap,char)编译通过,执行报错的有关问题
请教va_arg(ap,char)编译通过,执行报错的问题
用的c-free 5.0
case 'c':
putchar(va_arg(ap, char *));
//读取字符,为啥va_arg(ap,char)编译能通过,但是执行会报错?
//参数是字符,如'h'等,var_arg(ap, char *)和var_arg(ap, int)都正常。
str += 2;
break;
大牛们帮忙点拨下?谢谢。
------解决思路----------------------
参数处理时,应该是按照字符串来处理的,虽然你输入了个 ‘h’。
你就按照char*字符串来处理,然后取第一个字符好了。
------解决思路----------------------
某些编译器,不能处理,char,short
float 则 无论那个编译器都处理不了
因为 val_list,v_start,va_arg,va_end 采用的是宏定义
,而不是语法糖 的方式实现
------解决思路----------------------
而参数传递,利用的是提升规则,本质上是语法糖的效果
用的c-free 5.0
case 'c':
putchar(va_arg(ap, char *));
//读取字符,为啥va_arg(ap,char)编译能通过,但是执行会报错?
//参数是字符,如'h'等,var_arg(ap, char *)和var_arg(ap, int)都正常。
str += 2;
break;
大牛们帮忙点拨下?谢谢。
------解决思路----------------------
参数处理时,应该是按照字符串来处理的,虽然你输入了个 ‘h’。
你就按照char*字符串来处理,然后取第一个字符好了。
------解决思路----------------------
某些编译器,不能处理,char,short
float 则 无论那个编译器都处理不了
因为 val_list,v_start,va_arg,va_end 采用的是宏定义
,而不是语法糖 的方式实现
------解决思路----------------------
而参数传递,利用的是提升规则,本质上是语法糖的效果