> 백엔드 개발 > C++ > C에서 콜백은 어떻게 작동하며 다양한 용도는 무엇입니까?

C에서 콜백은 어떻게 작동하며 다양한 용도는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-14 06:20:11
원래의
347명이 탐색했습니다.

How Do Callbacks Work in C  , and What Are Their Various Uses?

C의 콜백과 다양한 용도

C에서 콜백은 클래스나 함수에서 허용하는 콜백(나중에 논의)입니다. 제공된 콜백을 기반으로 현재 로직을 맞춤설정하는 데 사용됩니다.

이유 콜백 사용:

  • 호출된 함수의 로직과 독립적인 일반 코드를 작성하여 다른 콜백으로 재사용할 수 있습니다.
  • 특정 이벤트를 호출자에게 알리려면 정적 활성화 컴파일 타임 유연성.

C에서 호출 가능 항목이란 무엇입니까? ?

  • 함수 포인터(멤버 함수에 대한 포인터 포함)
  • std::function object
  • Lambda 표현식
  • 바인드 표현식
  • 함수 객체(함수 호출 연산자가 오버로드된 클래스) 연산자())

콜백 작성 및 호출:

함수 포인터:

  • 유형 표기법: return_type (*)(parameter_type_1, 매개변수_유형_2, 매개변수_유형_3)
  • 콜백 호출 표기: function_pointer(argument)
  • 콜백 사용 표기: function(argument_list, function_pointer)

멤버 함수에 대한 포인터:

  • 유형 표기법: return_type (class_type::*)(parameter_type_1, 매개변수_유형_2, 매개변수_유형_3)
  • 콜백 호출 표기법: (class_instance.*member_function_pointer)(argument)
  • 콜백 사용 표기법: function(argument_list, class_instance, member_function_pointer)

std::function 객체:

  • 유형 표기: std::function
  • 콜백 호출 표기법: function_object()
  • 콜백 사용 표기법: function(argument_list, function_object)

사용 예시 std::function:

일반화 코드:

template<class R, class T>
void stdf_transform_every_int_templ(int *v, unsigned const n, std::function<R(T)> fp) {
  for (unsigned i = 0; i < n; ++i) {
    v[i] = fp(v[i]);
  }
}
로그인 후 복사

템플릿 콜백:

template<class F>
void transform_every_int_templ(int *v, unsigned const n, F f) {
  for (unsigned i = 0; i < n; ++i) {
    v[i] = f(v[i]);
  }
}
로그인 후 복사

유형 이름 구현:

template <class T>
std::string type_name() {
  typedef typename std::remove_reference<T>::type TR;
  std::unique_ptr<char, void(*)(void*)> own
    (abi::__cxa_demangle(typeid(TR).name(), nullptr,
    nullptr, nullptr), std::free);
  std::string r = own != nullptr?own.get():typeid(TR).name();
  if (std::is_const<TR>::value)
    r += " const";
  if (std::is_volatile<TR>::value)
    r += " volatile";
  if (std::is_lvalue_reference<T>::value)
    r += " &amp;&";
  else if (std::is_rvalue_reference<T>::value)
    r += " &amp;&amp;";
  return r;
}
로그인 후 복사

위 내용은 C에서 콜백은 어떻게 작동하며 다양한 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿