면접 원이 내게이 질문을했는데 내 대답이 충분히 좋았는지 확실하지 않았습니다. 누구든지 아이디어가 있습니까?왜 링커는 C++에 비해 C에 비해 더 힘든 작업을합니까?
2
A
답변
0
내 머리에 튀어 나온 첫 번째 생각은 맹 글링하는 이름이었습니다. C++에는 있지만 C 언어에는없는 동일한 이름이지만 매개 변수가 다른 두 가지 메소드를 사용할 수 있습니다. 컴파일러는 두 메소드를 구별해야하므로 내부적으로 이름을 변경 (mangle)합니다.
C++ 컴파일러가 C에서 수행해야하는 또 다른 사항은 클래스 상속을 처리하는 것입니다. 추상 클래스, 재정의 된 메소드 및 가상 메소드가 있습니다. 그건 좀 더 처리가 필요합니다.
0
나는 이것을 아주 잘 이해한다고 말할 수는 없지만,이 blog entry by Ian Lance Taylor에 답이있는 것 같습니다. 아래에서 인용 :
C++을 사용할 때 몇 가지 특별한 문제가 있습니다. 새로운 가상 메소드를 클래스에 추가하는 것은 해당 클래스를 사용하는 모든 함수에 대한 ABI 변경이 될 수 있습니다. 이러한 상황에서 역 호환 가능한 버전의 클래스를 제공하는 것은 매우 어색합니다. 가상 테이블이나 이전 버전의 RTTI 정보에 사용할 이름과 버전을 지정하는 자연스러운 방법은 없습니다.
물론 기호를 삭제해서는 안됩니다.
더 많은 내용을 보려면 항목을 읽어보십시오. (ABI = 응용 프로그램 바이너리 인터페이스)
관련 문제
- 1. mergesort가 연결된 목록에 비해 왜 더 좋은가요?
- 2. C에
- 3. C에
- 4. C에
- 5. 문자열 비교가 정수 비교에 비해 왜 빠른가요?
- 6. C에 해당
- 7. 는 C에
- 8. 왜 simplexml_load_file이 호스트 파일에 비해 작동하지 않습니까?
- 9. Ruby에서 블록이 Smalltalk에 비해
- 10. 리눅스에 비해 코드가 느립니다.
- 11. 키워드 구조체를 C에 배치
- 12. 엔티티 프레임 워크 코드가 먼저 RAD에 비해 NOSQL에 비해 최상입니까?
- 13. Unix m/c에 디렉토리의 Zip 만들기 Unix m/c에
- 14. C에 하스켈/ML 같은 컴파일러가 있습니까?
- 15. 오라클 투명한 데이터 암호화 비해 독 액세스
- 16. 무엇을 (무효 (^) (ID) 내가 목표 - C에 안돼서? 오브젝티브 C에 대한
- 17. 객관적인 c에 nsstring
- 18. 객관적인 c에 plist 작성
- 19. 변경 문자열은 오브젝티브 C에
- 20. C의 CONST/C에
- 21. C에 해당 삭제 ++ [] (숯불 *)
- 22. C에 대한 질문! 운영자
- 23. 객관적인 c에 대몬 작성하기
- 24. 직사각형 배열 C에
- 25. 객관적인 c에 sqlite3_stmt 전달
- 26. 이것은 ANSI C에 해당됩니까?
- 27. C에 std :: map 포팅?
- 28. 쉼표 오브젝티브 C에
- 29. C에 해당하는 C++
- 30. VB Linq는 C에 # Linq에
질문에 어떻게 대답 했습니까? –
당신의 대답은 무엇입니까? –