일반적인 함수들은 내가 원하는 시점에 호출한다.
그러나 가끔은 인터럽트가 들어와서 내가 원하지 않는 시점에 함수가 호출 될 수도 있다.
이때 호출 되는 함수가 콜백함수이다.

예를들면 폰으로 영상을 보고 있다면 영상은 내가 호출한 것
이때 전화가 오면 전화가 영상 화면을 가려버리는데 
이 전화가 내가 의도한것이 아닌 OS쪽에서 스스로 실행한 콜백함수인것

콜백함수를 흔하게 볼 수 있는 곳은 Application과 OS간 호출
Application에 콜백함수를 구현하고, OS에 콜백함수를 호출하는 함수를 구현
그리고 OS에서 특정 이벤트가 발생하면 콜백함수가 호출됨

콜백함수는 함수포인터를 이용해서 구현

void EventFunc(){                  // Application에 해당
    printf("이벤트 발생!!");
}
 
void CallbackFunc(void (*fp)()){    // OS에 해당
    if(event 발생 시) fp();
}
 
int main(){
   CallbackFunc(EventFunc);
}

위처럼 이벤트가 발생하면 콜백함수가 호출됨