C-Like 2

[C++]가상 함수, 순수 가상 함수(virtual function)

시작하기 앞서... C++은 기본적으로 프로그램의 속도를 위하여, 복잡한 형태를 가진 기능인 경우, 실행 시간의 처리보다는 컴파일을 하였을 때, 처리하는 경우가 다반사입니다. // 대표적인 예시들 constexpr int a = 0; // constexpr은 const와 달리, 컴파일을 하였을 때, 상수가 결정된다. // cosntexpr int a; // 컴파일을 할 때, 상수가 결정되지 않았기에 틀림 std::vector a; // 제너릭 프로그래밍 같은 경우에도, 해당 타입을 컴파일 할 때, 추가되는 방식이다.그러나, C++에서는 RTTI 기능이 존재하기에, 굳이 컴파일 타임 말고도, 런타임에서 결정화시키도록 진행한 것이 있습니다. 그럼 한번 알아볼까요? RTTI RTTI는 RunTime Type ..

C-Like/C++ 2021.09.16

[C]Weak Function

임베디드의 라이브러리를 파악하던 도중 특이한 것을 보았습니다. 바로 __attribute__((weak))입니다. 그동안 __attribute__는 함수에 대한 특성을 정하는 것이라고 들었을 뿐, 다른 것은 듣지 못했습니다. 그렇기에, 오늘 이에 대한 것을 알려드릴려고 합니다. Weak Function이란? Weak Function은 함수의 특성이 Weak인 것으로, 만일 같은 이름의 함수가 생성이 될 경우, __attribute__((weak))로 선언된 함수 부분은 컴파일 하였을 때, 제거가 되고, 새로 재정의된 함수가 Weak 함수의 자리를 대체합니다. 주로 임베디드 라이브러리에서도 자주 보이기도 하죠. 이를 이용한 대표적인 것이 임베디드에서의 ISR로 ISR같은 경우 함수의 특성이 weak와 al..

C-Like/C 2021.07.10
1