9월, 2019의 게시물 표시

콜백(Callback) 함수

콜백(Callback) 함수. 이름만 들어보면 무슨 말을 하는 건지 모르겠다. 대부분 인터넷에서 찾아볼 수 있는 글은 콜백 함수를 어떻게 사용하는가에 대해 설명할 뿐, 콜백이 뭔지는 설명해주지 않는다. 그래서 계속 검색을 하던 중에, 스택오버플로우에서 이 콜백 함수의 개념을 잘 설명해준 글을 찾았다. ( https://stackoverflow.com/questions/824234/what-is-a-callback-function ) 콜백 함수는 다른 함수에 의해 접근 가능하고, 첫 번째 함수가 종료가 되고 난 다음에 호출되는 함수 를 의미한다. 다른 함수에 의해 접근 가능하다는 말은 전역이나 static 함수에 접근한다는 뜻이 아니라, C/C++의 함수 포인터나, C#의 델리게이트 같은 걸로 함수를 다른 함수의 매개변수로 건네는 방식으로 어느 객체의 멤버함수에 접근한다는 뜻이다. 물론 마음만 먹으면 전역으로 만든 함수도 매개변수로 건네줄 수 있지만, 전역이면 매개변수로 접근하지 않고 그냥 호출하는게 편하다. 그리고 함수가 종료되고 난 다음에 호출한다는 것은, 매개변수로 받은 콜백 함수를 맨 마지막에 작업이 종료되는 시점에 호출한다는 뜻이다. 좀 더 기억하기 쉽게 생각하려면, Call ed at the back 을 떠올려보자. 한줄로 요약하면 콜백 함수는 어떤 함수가 작업을 다 끝낼 때 호출되는 함수다. 이걸 할려면 함수에 콜백 함수를 인자로 넣어야 하며, C/C++에서는 함수 포인터, C#에서는 델리게이트를 사용한다.