어떻게 C++에서 c 로의 호출이 내부적으로 작동합니까 ??C++에서 c 코드 호출
1
A
답변
2
중대한 구현 세부 사항입니다. 하지만 내가 아는 대부분의 C++ 컴파일러는 C 함수를 인스턴스가 아닌 C++ 함수와 구별하기 위해 특별한 작업을 시도하지 않습니다. 두 가지 모두에 대한 평범한 구식 cdecl 호출 규칙.
중요한 것은 printf() 같은 함수를 사용하는 CRT 구현이 동일한 공급 업체의 C++ 컴파일러와 마찬가지로 C 컴파일러에서도 사용할 수 있기 때문입니다. 아무도 두 가지 버전을 유지하려고하지 않습니다.
3
C++ 컴파일러는 '올바른 일을 함'하고 C 함수에 올바른 호출 규칙을 사용합니다. 불만스러운 응답이지만 너무 많은 것을 말할 수는 없습니다.
관련 문제
- 1. C에서 C++ 라이브러리 호출 #
- 2. 네이티브 C에서 .NET 관리 코드 호출
- 3. Objective C에서 C++ 메서드 호출
- 4. C에서 C# (.NET) API 호출
- 5. C에서 C++ 프로그램 호출 문제
- 6. 리눅스 시스템 호출 getifaddr의 C++ 내 C에서
- 7. Java 코드 대 C# 코드 호출 성능 C# 코드
- 8. C에서 MATLAB 호출
- 9. Telerik radconfirm에서 C# 코드 호출
- 10. C# 비 관리 코드 호출
- 11. GWT에서 네이티브 (C++) 코드 호출
- 12. C에서 코드 생성
- 13. C에서 유니 코드 문자열 비교 C#
- 14. Objective C에서 C++ 로의 자동 코드 생성
- 15. (Windows) C에서 API 호출 모니터링
- 16. C에서 동적 메서드 호출 #
- 17. C에서 비동기 호출 동기화
- 18. C에서 클래스의 일반적인 호출 #
- 19. C에서 시스템 호출 반환 값
- 20. C에서 리디렉션 posix 파일 호출
- 21. C에서 MIPS 어셈블리 코드 컴파일
- 22. C에서 malloc 코드
- 23. C에서 유니 코드 문자열 #
- 24. C에서 VB6로 만든 DLL을 호출
- 25. C에서 비동기 프로그래밍을위한 샘플 코드
- 26. C# 스레드에서 비 관리 코드 호출
- 27. C# : 메서드 호출 이벤트? (리팩터링 코드)
- 28. C#의 다른 코드에서 Button 코드 호출
- 29. C 코드 내에서 R 스크립트 호출
- 30. Java (GCJ)에서 C++ 코드 호출
참고로 'extern "C"의 인수는 어떻게됩니까? – cHao
@cHao 연산자 오버로드를 지원하기 위해 C++이 수행하는 이름 변환을 중지합니다. 컴파일러에 의해 생성 된 어셈블리에서'foo (int)'와'foo (double)'는'foo_int'와'foo_double'로 변환 될 수 있지만'extern "C"foo (int) "와'extern"C "foo double)'둘 다 간단히'foo'로 번역한다. –
링커에서 볼 수있는 식별자의 이름을 바꾼다. C++ 이름 변환을 끕니다. 모든 전통적인 CRT 함수는 C++ 컴파일러에서 볼 수있는 선언에서 extern "C"입니다. –