推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

C语言中可变参数的用法——va_list、va_start、va_arg、va_

   2023-07-22 网络整理佚名990
核心提示:等定义成宏,所以它显得很愚蠢,可变参数的类型和个数完全在该函数中由程序代码控制,它并不能智能地识别不同参数的个数和类型.那是因为函数是从固定参数字符串来分析出参数的类型,再调用的来获取可变参数的.也就是说,你想实现智能识别可变参数的话是要通过在自己的程序里作判断来实现的.另外有一个问题,因为编译器对可变参数的函数的原型检查不够严格,对编程查错不利.Unix把定义为只有一个参数的宏:

因为, 等被定义为宏,看起来很愚蠢。 变量参数的类型和个数完全由该函数中的程序代码控制,无法智能识别不同参数的个数和类型。 有人可能会问:不是实现了参数的智能识别吗? 那是因为函数从固定参数字符串中分析出参数类型,然后调用获取可变参数。 的原型检查不够严格,不利于编程错误检查。 若将()改为:

无效(整数我,...)

;

字符 *s=NULL;

(, 我);

s=(, 字符*);

();

("%d %s\n", i, s);

;

变量参数为char*类型。 当我们忘记使用两个参数来调用函数时,就会出现核心转储(Unix)或页面非法错误(平台)。 但可能没有错误,但错误却很难发现,这不利于我们编写高质量的程序。

下面提到va系列宏的兼容性。 V Unix 将其定义为只有一个参数的宏:

( );

ANSI C 定义为:

( , );

如果我们想使用V的定义,我们应该使用.h头文件中定义的宏。 ANSI C的宏和V的宏不兼容,我们一般用ANSI C,所以ANSI C的定义就够了,而且也方便程序移植。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON