간단히 말하면 함수라고 불리는 것입니다. 함수 포인터(주소)를 다른 함수에 매개변수로 전달하고 이 포인터가 가리키는 함수를 호출하는 데 사용되는 경우
라고 합니다.
왜 사용하나요?
발신자와 수신자가 분리될 수 있기 때문이죠. 호출자는 호출 수신자가 누구인지 상관하지 않습니다. 알아야 할 것은 특정 프로토타입과 특정 제한 사항(예: 반환 값 int)이 있는 호출된 함수가 있다는 것뿐입니다.
콜백 함수가 실제로 무엇을 하는지 알고 싶다면 먼저
, 퀵 정렬, 쉘 정렬, 쉐이크 정렬과 같은 특정
구현을 제공하는 라이브러리를 작성하려는 상황이 있다고 가정해 보겠습니다. 등등. 그러나 라이브러리를 더욱 다양하게 만들기 위해 함수에 정렬 논리를 포함하고 사용자가 해당 논리를 구현하도록 하고 싶지 않습니다. 또는 라이브러리를 다양한 용도로 사용하고 싶습니다.
( int, float, string) 이때 어떻게 해야 할까요?
를 사용하여 콜백을 할 수 있습니다.
콜백은 알림 메커니즘에 사용될 수 있습니다. 예를 들어, 특정 시간에 도달할 때마다 프로그램에서 타이머를 설정해야 하지만 알림 메커니즘 구현자는 우리에 대해 아무것도 모릅니다. 프로그램. 이때 특정 프로토타입
이 있어야 하며 이 포인터를 사용하여 이벤트가 발생했음을 프로그램에 알리는 콜백을 수행해야 합니다. 실제로 SetTimer() API는 콜백 함수를 사용하여 타이머에 알리고, 콜백 함수가 제공되지 않는 경우 프로그램의
에도 메시지를 보냅니다.
콜백 메커니즘을 사용하는 또 다른 것은 EnumWindow()입니다. 이는 화면의 모든 최상위 창을 열거하고, 각 창에 대해 프로그램에서 제공하는 함수를 호출하고, 창의 핸들러를 전달합니다. 호출 수신자가 값을 반환하면 반복을 계속하고, 그렇지 않으면
exit. EnumWindow()는 호출 수신자가 어디에 있는지 또는 전달된 핸들러로 호출 수신자가 무엇을 했는지 신경 쓰지 않습니다. 반환 값에 따라 실행을 계속하거나 종료하기 때문에 반환 값에만 관심이 있습니다. 어쨌든 콜백 함수는
C 언어에서 상속되었기 때문에 C++에서는 C 코드로 인터페이스를 구성하거나 기존 콜백 인터페이스를 다룰 때만 사용해야 합니다. 위의 경우를 제외하고 C++에서는 콜백 함수 대신 가상 메소드나 펑터를 사용해야 합니다.
위 내용은 콜백 함수는 언제 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!