2006년 01월 20일
C++ 가변인수 간단예제
#include <iostream>
#include <stdarg.h>

using std::cout;
using std::endl;

int GetSum(int num, ...){
    int sum=0;
    va_list ap; //가변인수를 읽기위한 포인터변수

    //va_start(ap,마지막고정인수) ap가 첫 번째 가변인수를 가리키도록 초기화
    va_start(ap,num);

    for(int i=0;i        sum += va_arg(ap,int); //va_arg(ap,인수타입) 가변인수를 읽어들인다
    }

    va_end(ap); //가변인수 읽기 종료

    return sum;
}

int main(){
    cout<<"1+2="<    cout<<"3+4+5+6="<    return 0;
}
by -A2- | 2006/01/20 01:12 | 개발/플밍 | 트랙백 | 덧글(2)
트랙백 주소 : http://ani2life.egloos.com/tb/2130875
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by daybreaker at 2006/01/20 01:22
예전부터 궁금하던 것이었는데, 가변 인수의 형식도 다 다르게 받는 방법은 없을까요? 마치 선택적 인수처럼 말이죠. 특히나 API 형태의 DLL을 만들 때 그런 게 가능하다면 편리할 것 같은데.. (윈도 API에 그런 게 없고 다만 플래그 값에 따라 포인터 변수에 들어가는 데이터 형식이 달라지는 것만 있는 걸로 봐서 불가능한 걸지도...)
Commented by -A2- at 2006/01/20 02:00
daybreaker// 함수(int가변인수,char가변인수...) 이런식으로 대중없이 받는 방법 말씀하시는 건가요?
아니면 함수(int가변인수,int가변인수...) 함수(char가변인수,char가변인수...) 말씀하시는 건가요?
전자라면 정말 대책이 없을것 같고 후자라면 템플릿을 이용해서 가능할 수 있을 것 같습니다.
가변인수에서 마음에 들지 않는 부분은 넘겨받은 가변인수의 갯수를 알 수 없다는 점이 안좋은것 같습니다.

:         :

:

비공개 덧글



<< 이전 페이지 | 다음 페이지 >>