> 백엔드 개발 > C++ > 동일한 컴파일러를 사용하여 C 11, C 14 및 C 17 개체를 안전하게 연결할 수 있습니까?

동일한 컴파일러를 사용하여 C 11, C 14 및 C 17 개체를 안전하게 연결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-05 10:52:13
원래의
948명이 탐색했습니다.

Can C  11, C  14, and C  17 Objects be Safely Linked Using the Same Compiler?

C 17, C 14, C 11 개체 연결의 호환성

안전한 조합

컴파일된 세 개체(A, B)가 있는 시나리오에서 및 C)는 동일한 컴파일러를 사용하여 생성됩니다. 버전:

  • C 11 표준으로 컴파일된 A
  • C 14 표준으로 컴파일된 B
  • C 17 표준으로 컴파일된 C

...그리고 다음을 가정합니다.

  • 헤더는 C로 작성됩니다. 11
  • 구성체는 세 가지 표준 모두에서 일관된 의미를 갖습니다
  • 상호 종속성이 올바르게 표현됩니다

...이러한 개체의 조합을 연결하는 것이 안전합니다. GCC에 따르면. GCC는 이러한 경우 사용되는 표준 버전에 관계없이 ABI 호환성을 보장합니다.

주의 사항

그러나 개체가 다른 GCC 버전으로 컴파일되고 불안정한 C 표준 기능을 사용하는 경우 연결 문제가 발생할 수 있습니다. 예를 들어 C 11 표준을 사용하여 GCC 4.9 및 5로 컴파일된 개체를 연결하면 GCC 4.x의 불안정한 C 11 지원으로 인해 문제가 발생할 수 있습니다.

C 03, C 11 및 C 17의 안정성 다양한 GCC 버전에서의 지원은 다음과 같습니다:

  • C 03: 모두 안정적 버전
  • C 11: GCC 5 이후 안정적
  • C 17: GCC 7 및 8에서 실험

추가 고려 사항

  • 언제 다른 C 표준 버전을 사용하는 경우 공유 라이브러리(libstdc .so)가 최소한 다음과 같은지 확인하세요. new는 객체를 컴파일하는 데 사용되는 버전입니다.
  • GCC는 버전 5부터 std::string의 두 가지 구현을 제공합니다. std::string을 사용하는 객체는 호환성을 위해 동일한 구현으로 컴파일해야 합니다.

위 내용은 동일한 컴파일러를 사용하여 C 11, C 14 및 C 17 개체를 안전하게 연결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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