Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      va_start

      From cppreference.com
      <c‎ |variadic
       
       
       
      Defined in header<stdarg.h>
      void va_start( va_list ap, parmN);
      (until C23)
      void va_start( va_list ap, ...);
      (since C23)

      Theva_start macro enables access to the variable arguments following the named argumentparmN(until C23).

      va_start shall be invoked with an instance to a validva_list objectap before any calls tova_arg.

      IfparmN is declared withregister storage class specifier, with an array type, with a function type, or with a type not compatible with the type that results from default argument promotions, the behavior is undefined.

      (until C23)

      Only the first argument passed tova_start is evaluated. Any additional arguments are neither expanded nor used in any way.

      (since C23)

      Contents

      [edit]Parameters

      ap - an instance of theva_list type
      parmN - the named parameter preceding the first variable parameter

      [edit]Expanded value

      (none)

      [edit]Example

      Run this code
      #include <stdio.h>#include <stdarg.h> int add_nums_C99(int count, ...){int result=0;    va_list args;    va_start(args, count);// count can be omitted since C23 for(int i=0; i< count;++i){        result+= va_arg(args,int);}     va_end(args);return result;} #if __STDC_VERSION__ > 201710L// Same as above, valid since C23int add_nums_C23(...){int result=0;    va_list args;    va_start(args); int count= va_arg(args,int);for(int i=0; i< count;++i){        result+= va_arg(args,int);}     va_end(args);return result;}#endif int main(void){printf("%d\n", add_nums_C99(4,25,25,50,50));#if __STDC_VERSION__ > 201710Lprintf("%d\n", add_nums_C23(4,25,25,50,50));#endif}

      Possible output:

      150150

      [edit]References

      • C17 standard (ISO/IEC 9899:2018):
      • 7.16.1.4 The va_start macro (p: 198-199)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.16.1.4 The va_start macro (p: 271-272)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.15.1.4 The va_start macro (p: 251-252)
      • C89/C90 standard (ISO/IEC 9899:1990):
      • 4.8.1.1 The va_start macro

      [edit]See also

      accesses the next variadic function argument
      (function macro)[edit]
      (C99)
      makes a copy of the variadic function arguments
      (function macro)[edit]
      ends traversal of the variadic function arguments
      (function macro)[edit]
      holds the information needed byva_start,va_arg,va_end, andva_copy
      (typedef)[edit]
      C++ documentation forva_start
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/variadic/va_start&oldid=142169"

      [8]ページ先頭

      ©2009-2025 Movatter.jp