Công ty chúng tôi sẽ mua một đoạn mã nguồn lớn và rất phức tạp cho thông tin vệ tinh. Nó được mã hóa trong C ++ và chúng tôi sẽ mã bổ sung cho nó, cũng trong C ++, liên kết mã của chúng tôi với mã đã mua thành một đơn vị thực thi duy nhất.
Nghe hay đấy!
Có cần thiết phải sử dụng cùng một trình biên dịch và cùng một phiên bản trình biên dịch như đã được sử dụng để phát triển mã đã mua không?
Nói chung, không cần thiết. Mục đích của C ++ là hoạt động như một sự trừu tượng hóa các loại điều này, vì vậy một chương trình C ++ được viết tốt sẽ biên dịch tốt trên chuỗi công cụ của bạn giống như trên tác giả ban đầu và chương trình kết quả sẽ có kết quả tương tự. Hiệu suất có thể khác nhau, bởi vì các trình biên dịch khác nhau tốt ở những thứ khác nhau, nhưng hành vi cơ bản của chương trình không nên thay đổi.
Tuy nhiên, phần mềm được viết xấu có thể dựa vào hành vi cụ thể thực hiện hoặc thậm chí là hành vi không xác định. Nó có thể đưa ra các giả định về các loại tích hợp hoặc về độ bền của nền tảng. Ngay cả phần mềm được viết tốt cũng có thể không có lựa chọn nào ngoài việc dựa vào các tiện ích mở rộng không chuẩn không có trên chuỗi công cụ bạn đã chọn hoặc có thể làm như vậy vì đơn giản là không cần phải dành thời gian để thêm lớp khả năng di động trong khoảng thời gian dự án ban đầu.
Cuối cùng, bạn sẽ cần hỏi tác giả / nhà cung cấp mã nguồn được viết để làm gì. Nếu họ cho rằng nó được viết riêng, giả sử, Visual Studio 2015 và yêu cầu các tính năng API của Windows, có lẽ bạn nên tuân thủ điều đó. Nhưng nếu họ cho rằng đó là C ++ di động, tiêu chuẩn, thì hãy sử dụng bất kỳ trình biên dịch nào bạn thích. Hãy chắc chắn rằng thỏa thuận mua hàng của bạn bao gồm một thỏa thuận hỗ trợ để bạn có thể nhận được sự giúp đỡ miễn phí khi hóa ra nhà cung cấp đã nói dối.
Có cần thiết phải sử dụng cùng một phiên bản C ++ như mã đã mua không? Nếu nó không sử dụng 2014, chúng tôi có thể muốn sử dụng một số tính năng của nó, nhưng không có vấn đề gì với việc trộn các phiên bản khác nhau.
Có lẽ. Có lẽ.
C ++ 03 tương thích với hầu hết các phần vì vậy, nếu mã là C ++ 03, thì bạn không có vấn đề gì. (Mặc dù một số điều chỉnh có thể được yêu cầu.)
Nhưng các tính năng được giới thiệu trong C ++ 11 và C ++ 14 không tương thích ngược nên nếu nhà cung cấp đã sử dụng, giả sử, C ++ 11 lambdas và bạn cố gắng xây dựng mã của họ trong trình biên dịch C ++ 03, chỉ cần thắng 't làm việc.
Về lý thuyết, tất nhiên, nó không phải là vấn đề, đặc biệt là phiên bản ngôn ngữ, nhưng có thể hình dung rằng các phiên bản khác nhau của trình biên dịch sẽ tạo ra mã đối tượng khác nhau, có khả năng dẫn đến sự khác biệt về thời gian, v.v.
Chắc chắn rồi. Nếu mã phụ thuộc rất nhiều vào việc triển khai cụ thể để có được kết quả mong đợi, thì nhà cung cấp phải chịu trách nhiệm và thông báo cho bạn về điều đó. Vì chúng ta sống trong thế giới thực, tôi khuyên bạn nên siêng năng và hỏi họ trước.
Và tôi sẽ lặp lại những gì người khác đã nói: đảm bảo rằng bạn có một số cách truy vấn hỗ trợ, để nếu họ trình bày sai bất kỳ câu trả lời nào cho những câu hỏi này (dù cố ý hay cách khác), bạn sẽ không phải chịu chi phí kết quả.