일부 프로그래밍 언어에서는 다른 프로그래밍 언어의 메서드를 호출하는 기능을 접했습니다. 그 이름은 Foreign Function Interface
입니다. 예를 들어 파이썬 프로그램 내에서 C 언어 함수를 호출 할 수 있습니다. 아니면 Python 언어로 일부 C 라이브러리의 래퍼를 작성하여 다른 Python 사용자가이를 사용할 수 있도록 할 수 있습니다.프로그래밍 언어 C API 래퍼
한 간단한 예는 Python의 ctypes
입니다. 그래서 이것을 사용하여 libc의 time
함수에 접근 할 수 있습니다. 나는이 수준으로 이해한다. 그러나, 나는이 ctypes가 어떻게 구현되고 다른 것들은 장면 뒤에 있는지에 대한 명확한 그림을 얻을 수 없었다! 여기에 나를 위해 발생
질문은 다음과 같습니다이 언어를위한 컴파일러를 할 기능의 어떤 종류의
- 가 외국인 함수 인터페이스를 사용해야합니다. 왜냐하면 외국어도 컴파일해야하기 때문입니다.
- 호스트 언어가 객체 지향이고 외국어가 아닌 경우 객체와 매핑하는 것이 필요합니다. 어떻게 처리됩니까?
- 호스트 언어가 가상 컴퓨터에서 실행되는 경우 어떻게됩니까? 이 경우 명령어 세트는 다를 수 있습니다. 맞습니까?
이것은 매우 합리적인 질문입니다. – Marcin
이 질문은 매우 일반적이기 때문에 대답하기가 어렵습니다. 파이썬과 C에 관해 구체적으로 말하면 간단한 대답은 '파이썬은 스택에 매개 변수를 배치하고 컴파일 된 C 함수를 나타내는 메모리로 점프하는 법을 알고있다'입니다. 하지만 shar가 찾고자하는 답변은 구현에 따라 다릅니다. –
이 주제에 대한 좋은 자료를 가리켜봤을 때 많은 것을 이해하는데 도움이 될 것입니다. – shar