Movatterモバイル変換


[0]ホーム

URL:


본문으로 이동
위키백과
검색

stdarg.h

위키백과, 우리 모두의 백과사전.

C 표준 라이브러리
일반 주제
기타 주제

stdarg.hCC 표준 라이브러리의 헤더로 인자 수를제한 없이 할 수 있도록 하는 함수를 허용할 수 있도록 한다.[1] 이 헤더는 알려지지 않는 숫자나 타입의 함수 인자 목록을 통한 절차를 위한 기능을 제공한다.C++에서는 이 기능을cstdarg에서 제공한다.

stdarg.h의 내용은 가변 함수라 불리는 다른 함수 (예 -vprintf)에 쓰이나 일반적으로가변 함수에 쓰인다.

가변 함수 선언

[편집]

가변 함수는 임의 개수의 인자가 쓰이고 마지막 인자 대신 줄임표에 의해 선언되는 함수이다. 이를 이용한 함수의 예시로printf가 있다. 일반적으로 다음과 같이 선언할 수 있다.

intcheck(inta,doubleb,...);

가변 함수는 최소 하나의 인자는 가져야 한다. 따라서 다음 예시는

char*wrong(...);

는 C에서 허용되지 않는다. (C++에선 가능) C에서, 콤마는 줄임표 앞에 있어야 하나 C++에선 그렇지 않아도 된다.

예시

[편집]
#include<stdio.h>#include<stdarg.h>/* print all args one at a time until a negative argument is seen;   all args are assumed to be of int type */voidprintargs(intarg1,...){va_listap;inti;va_start(ap,arg1);for(i=arg1;i>=0;i=va_arg(ap,int))printf("%d ",i);va_end(ap);putchar('\n');}intmain(void){printargs(5,2,14,84,97,15,-1,48,-1);printargs(84,51,-1);printargs(-1);printargs(1,-1);return0;}

이 프로그램은 다음과 같이 출력한다.

5 2 14 84 97 1584 511

함수에서부터 다른 var 인자 함수를 부르기 위해 (예 - sprintf) 해당 함수의 var 인자 함수를 사용할 필요가 있다. (vsprintf가 이 예시에 있음)

voidMyPrintf(constchar*format,...){va_listargs;charbuffer[BUFSIZ];va_start(args,format);vsnprintf(buffer,sizeofbuffer,format,args);va_end(args);FlushFunnyStream(buffer);}

각주

[편집]
  1. “IEEE Std 1003.1stdarg.h. 2009년 7월 4일에 확인함. 
C 특징
C 표준 라이브러리 함수
C 표준 라이브러리
컴파일러
IDEs
파생 언어
원본 주소 "https://ko.wikipedia.org/w/index.php?title=Stdarg.h&oldid=34404535"
분류:
숨은 분류:

[8]ページ先頭

©2009-2025 Movatter.jp