stdarg 宏

2023-11-09 17:33
文章标签 stdarg

本文主要是介绍stdarg 宏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,是标准库的一部分。这个头文件声明了一个类型va_list和三个宏va_start, va_arg和va_end。注意参数列表中的省略号。

 

    注意:可变参数必须从头到尾按照顺序逐个访问。如果你一开始就想访问参数列表中间的参数,那是不行的。

 

    首先声明一个类型为va_list、名叫var_arg的变量,用于访问参数列表未确定部分。

 

    调用va_start来初始化,它的第一个参数是va_list变量名,第二个参数是省略号前最后一个有名字的参数。

 

    访问参数,需要调用va_arg宏,它接受两个参数:va_list变量和参数列表中下一个参数的类型。

 

    最后,当访问完毕最后一个参数时,需要调用va_end。

 

 

/*
** Compute the average of the specified number of values.
*/

#include <stdarg.h>

 

float
average( int n_values, ... )
{
     va_list var_arg;
     int count;
     float sum = 0;

 

     /*
     ** Prepare to access the variable arguments.
     */
     va_start( var_arg, n_values );

 

 

     /*
     ** Add the values from the variable argument list.
     */
    for( count = 0; count < n_values; count += 1 )

   {
     sum += va_arg( var_arg, int );
    }

 

    /*
    ** Done processing variable arguments.
    */
    va_end( var_arg );

 

    return sum / n_values;
}

这篇关于stdarg 宏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377578

相关文章

《C和指针》——stdarg宏简介

可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。这个头文件声明了一个类型 va_list 和三个宏—— va_start、va_arg 和 va_end。我们可以声明一个类型为 va_list 的变量,与这几个宏配合使用,访问参数值。 函数声明了一个名叫 var_arg 的变量,它用于访问参数列表的未确定部分。这个变量通过调用 va_start 来初始纶。它

C现代方法(第26章)笔记——<stdarg.h>、<stdlib.h>和<time.h>标准库

文章目录 第26章 <stdarg.h>、<stdlib.h>和<time.h>标准库26.1 <stdarg.h>: 可变参数26.1.1 调用带有可变参数列表的函数26.1.2 v...printf函数26.1.3 v...scanf函数(C99) 26.2 <stdlib.h>: 通用的实用工具26.2.1 数值转换函数26.2.1.1 测试数值转换函数 26.2.2 伪随机序列生成函

stdarg.h以宏的形式定义变量列表- -va_list,va_start,vava_arg,_arg,va_end

一、stdarg.h原文 va在这里是variable-argument(可变参数)的意思 #ifndef _STDARG_H #define _STDARG_H typedef char *va_list; // 定义 va_list 是一个字符指针类型#define _va_rounded_size(TYPE)(((sizeof(TYPE) + sizeof(int) - 1)/siz