✅ 목표 (Goal)

이벤트 핸들러 함수를 통해서 콜백함수의 유용성에 대해 알아보자.

✅ C# 프로그램의 예

아래 그림은 버튼을 클릭했을 때, Hello, World가 출력되는 매우 간단한 C# 프로그램이다. C#, Java, C++ 모두 상관없다.

Untitled

버튼을 눌렀을 때 실행할 함수를 미리 등록 시켜놓고, 버튼이 누르면 그 함수를 호출하는 구조가 바로 콜백 함수 이다.

✅ C로 작성한 이벤트 핸들러

#include <stdio.h>

// 콜백 함수 타입 정의
//typedef void (*ButtonCallback)(void);

// 콜백 함수의 등록
//void button_click(ButtonCallback callback) {
void up_button_press(void (*callback)(void)) {
    //printf("up 버튼이 클릭되었습니다.\\n");
    callback(); // 콜백 함수 호출
}

void down_button_press(void (*callback)(void)) {
    //printf("down 버튼이 클릭되었습니다.\\n");
    callback(); // 콜백 함수 호출
}

// 버튼이 눌렸을때 실제 동작 함수
void up_button_pressed() {
    printf("이벤트: up 버튼 클릭 처리가 완료되었습니다.\\n");
}

void down_button_pressed() {
    printf("이벤트: down 버튼 클릭 처리가 완료되었습니다.\\n");
}

int main() {
    up_button_press(&up_button_pressed); // up 버튼 클릭 이벤트 등록
    down_button_press(&down_button_pressed); 
    return 0;
}

image.png

✅ 이게 뭐야? 굳이 왜 이렇게 힘들게 짜?