C에서 정적 멤버 함수 포인터를 C API 콜백으로 사용하면 안전성과 이식성에 대한 우려가 높아집니다. . 이러한 방식은 처음에는 제대로 작동하는 것처럼 보일 수 있지만 클래스 정적 함수는 C 함수와 동일한 호출 규칙을 채택하는 경우가 많으므로 C 표준에 따라 안전하지 않고 권장되지 않는 것으로 간주됩니다.
표준에 따르면(3.5/10 ), "주어진 객체나 함수를 참조하는 모든 선언에 의해 지정되는 유형은 동일해야 합니다." 그러나 정적 멤버 함수가 콜백 대상으로 사용되는 경우 C 언어 바인딩을 사용하는 콜백 코드에는 다른 언어 연결이 있는 함수가 필요합니다. 표준(7.5/1)에 정의된 대로 "언어 연결이 다른 두 함수 유형은 동일하더라도 서로 다른 유형입니다."
따라서 정적 멤버 함수와 API 콜백은 동일해야 합니다. 언어 연계. 안전성과 이식성을 보장하려면 C 코드에서 C ABI 콜백을 "extern "C""로 선언하는 것이 좋습니다.
위 내용은 ## C API 콜백으로서의 정적 멤버 함수 포인터: 안전성과 이식성 딜레마?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!