우리 회사는 위성 통신을위한 크고 복잡한 소스 코드를 구매할 것입니다. 이 코드는 C ++로 코딩되어 있으며 코드를 구매 한 코드와 단일 실행 단위로 연결하여 C ++로 코드를 추가합니다.
잘 들린다!
구매 한 코드를 개발하는 데 사용한 것과 동일한 컴파일러 및 동일한 컴파일러 버전을 사용해야합니까?
일반적으로 말하면 필요하지 않습니다. C ++의 목적은 이러한 종류의 것들에 대한 추상화 역할을하는 것이므로 잘 작성된 C ++ 프로그램은 원래 작성자와 마찬가지로 툴체인에서도 컴파일되며 결과 프로그램은 동일한 결과를 얻게됩니다. 다른 컴파일러는 다른 점에 능숙하기 때문에 성능이 다를 수 있지만 프로그램의 기본 동작은 바뀌지 않아야합니다.
그러나 잘못 작성된 소프트웨어는 구현 별 동작 또는 정의되지 않은 동작에 의존 할 수 있습니다. 내장 유형 또는 플랫폼의 엔디안에 대해 가정 할 수 있습니다. 잘 작성된 소프트웨어라도 선택한 툴체인에서 사용할 수없는 비표준 확장에 의존하는 것 외에는 선택의 여지가 없을 수도 있습니다. 원래 프로젝트.
궁극적으로, 당신은 소스 코드가 작성된 소스를 제작자 / 공급자에게 요청해야합니다. 예를 들어 Visual Studio 2015에 대해 특별히 작성되었다고 주장하고 Windows API 기능이 필요하다면 아마도 그 점을 고려해야합니다. 그러나 이식 가능한 표준 C ++이라고 주장하는 경우 원하는 컴파일러를 사용하십시오. 구매 계약에 공급 업체가 거짓말을했을 때 무료로 도움을받을 수 있도록 지원 계약이 포함되어 있는지 확인하십시오.
구매 한 코드와 동일한 버전의 C ++를 사용해야합니까? 그것은 2014를 사용하지 않을 경우, 우리는 할 수 그것의 일부 기능을 사용하기를 원하지만 다른 버전을 혼합 몇 가지 문제가있을 수 있습니다하지 않는 경우.
아마. 아마도.
C ++ 03은 대부분 순방향 호환되므로 코드가 C ++ 03이면 문제가 없을 것입니다. (일부 조정이 필요할 수 있습니다.)
그러나 C ++ 11 및 C ++ 14에 도입 된 기능은 이전 버전과 호환되지 않으므로 공급 업체가 C ++ 11 람다를 사용하고 C ++ 03 컴파일러에서 코드를 작성하려고하면 작동하지 않습니다.
이론 상으로는 물론 언어 버전은 중요하지 않지만 컴파일러의 버전이 다르면 서로 다른 객체 코드가 생성되어 타이밍 차이 등이 발생할 수 있습니다.
물론. 코드가 예상 결과를 얻기 위해 특정 구현에 많이 의존하는 경우 책임을지고이를 사용자에게 알리는 것은 공급 업체의 책임입니다. 우리는 현실 세계에 살고 있기 때문에 부지런히 먼저 질문하는 것이 좋습니다.
그리고 나는 다른 사람들이 말한 것을 반향 할 것입니다 : 당신이 어떤 종류의 지원 수단을 가지고 있는지 확인하십시오. 그래서 그들이 의도적 으로든 그렇지 않든 이러한 질문에 대한 답변을 잘못 표현했을 경우 결과 비용을 부담하지 않습니다.