Run if you want it
300x250

C_C++ 3

[C/C++] Volatile

volatile의 필요성 /* 작성 코드 */ u32 *ptr = (u32 *) 0xE0000300; *ptr = 0x1234; *ptr = *ptr & 0xFF; /* 컴파일러에 의한 최적화 */ u32 *ptr = (u32 *) 0xE0000300; *ptr = 0x1234 & 0xFF; 상기 예제의 경우 Compiler는 최적화를 위해 *ptr = 0x1234; 를 건너뛰고 맨 마지막 코드처럼 *ptr = 0x1234 & 0xFF; 으로 실행 But, 메모리 주소에 연결된 H/W 레지스터에 값을 쓰는 프로그램의 경우 각각의 write 동작이 H/W에 특정 명령을 전달하는 것이므로, 주소가 같다는 이유만으로 중복되는 write명령을 축약해 최적화 해버리면 H/W가 오동작 이러한 이유에 의해 volit..

C_C++ 2022.08.17

[C++] 가상함수(Virtual function)와 다형성

이 페이지는 상속(Inheritance)에 대하여 어느 정도 사전지식이 있다고 생각하고 서술하였습니다. C++의 객채지향프로그래밍의 가장 중 큰 특징 중 하나인 가상함수와 다형성에 대하여 알아볼 것이다. 가상함수(Virtual Function)이란 자식클래스에서 이미 정의되어 있는 부모클래스의 멤버함수를 오버라이딩(재정의)한 멤버함수를 의미한다. 먼저 코드를 통해 가상함수의 기본적인 개념인 '오버라이딩'에 대해 알아보자 #include #include using namespace std; class Parent { public: void WhoIam() { cout

C_C++ 2020.05.31

[C++] CallBack Function(콜백함수)

정의 - 호출될 함수를 알려주어, 다른 프로그램 또는 다른 모듈에서 함수를 호출 하게 하는 방법. 일반적으로 OS가 호출할 어플리케이션의 함수를 지정해 특정한 사건 or 메시지가 발발했을 때 호출되도록 지정할 수 있다. 이런 함수를 콜백함수라고 한다. 더 자세히 설명해보면 일반적인 함수는 클라이언트 측에서 서버의 함수를 호출하여 사용하는 반면에, 콜백함수는 일반적인 함수 호출과는 다르게 함수 포인터(or 람다 함수 등)를 이용해 콜백함수를 서버 측으로 전달한다. 이후 서버 측에는 콜백함수를 바로 사용할 수도 있으며, 콜백함수를 등록한 후 추후()에 사용할 수도 있다. (내가 호출하는게 아니라 서버 측에 의해서 호출됨) 이를 이용한 대표적인 예가 GUI 이벤트 & 핸들러이다. 특정 이벤트가 일어났을때 그에..

C_C++ 2020.01.29
728x90