반응형
출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일
가변 인자 함수
써본적은 있는데 내용 정리 필요.
참고
variableFactor.h
#pragma once #include <iostream> //initializer_list, vfprintf #include <initializer_list> //initializer_list #include <cstdarg> //va_list using std::cout; using std::endl; using std::initializer_list; bool g_debug = false; #pragma region C_style void debugOut(const char* str, ...) { va_list ap; if (g_debug) { va_start(ap, str); //vfprintf of vprintf를 사용해야한다 //printf 함수를 사용하면 안됨. vfprintf(stderr, str, ap); va_end(ap); } } void printInts(int num, ...) { int temp; va_list ap; va_start(ap, num); for (int iCnt = 0; iCnt < num; iCnt++) { temp = va_arg(ap, int); cout << temp << " "; } va_end(ap); cout << endl; } #pragma endregion #pragma region C++11_style //int만 초기화된다. int makeSum(initializer_list<int> Ist) { int total = 0; for (auto iter = Ist.begin(); iter != Ist.end(); ++iter) { total += (*iter); } return total; } #pragma endregion
variableFactor.cpp
#include "variableFactor.h" int main() { g_debug = true; debugOut("int %d\n", 5); debugOut("String %s and int %d\n", "hello", 5); debugOut("Many inis : %d, %d, %d, %d, %d\n", 1, 2, 3, 4, 5); printInts(5, 1, 2, 3, 4, 5); int a = makeSum({ 1,2,3,4,5 }); cout << a << endl; //int b = makeSum({ 1,2,3,3.0 }); // 한가지 타입만 가능하기 때문에 오류남. }
반응형