728x90

Language/C++ 11 2

[C++11] 가변인자(Variable Argument)를 이용한 Logger 만들기

1. 가변인자란? - 변수의 개수가 상황마다 변할 수 있는 인자. - 대표적인 예로 printf()와 scanf() 2. 가변인자를 사용하기 위한 함수 - va_start(var_list, lastfix) > Stack 상의 첫 가변인수의 위치를 구해 va_list 형에 대입한다. 함수가 호출되기 전에 선언되어 있어야 한다. > lastfix는 고정인수를 뜻한다. 고정인수는 가변인수의 시작번지를 찾기 위한 역할을 한다. (고정인수의 다음이 가변인수의 시작번지) - va_arg(va_list, type) > 가변 인수를 읽는 함수 > 첫 번째 인수는 va_start가 사용한 ap와 동일한 변수이고, ap가 가리키는 번지의 데이터를 가변인수로 읽는다. > 두 번째 인수는 type은 가변인수의 데이터 형을 나..

Language/C++ 11 2021.02.28

[C++11] std::function() 을 이용한 클래스 멤버 함수 저장 및 사용

C++ 11에서 std::function()을 이용해 함수를 미리 객체화하여 저장할 수 있다고 하여 아래와 비슷하게 코드를 사용하고 있다. Modern C++이나 C++ 11을 자세하게 이해한 후 코드를 실제 사용하는 코드에 대해 개선이 필요하다. - ReigsterFunc()을 이용해 함수를 객체화하여 저장, Exec를 통해 key에 따라 함수를 실행. #include #include template class State { public: void RegisterFunc(uint16_t keyEvent, std::function linkedFunc) { std::pair pair(keyEvent, linkedFunc); m_states.insert(pair); } void Exec(uint16_t ke..

Language/C++ 11 2021.02.28
반응형