当社は、衛星通信用の大きくて非常に複雑なソースコードを購入します。これはC ++でコーディングされており、C ++でもコードに追加をコーディングし、購入したコードとコードを単一の実行可能ユニットにリンクします。
いいですね!
購入したコードの開発に使用したのと同じコンパイラーおよび同じコンパイラーのバージョンを使用する必要がありますか?
一般的に言えば、いやそれは必要ありません。C ++の目的は、これらの種類の事柄に対する抽象化として機能することです。そのため、適切に作成されたC ++プログラムは、元の作成者と同じようにツールチェーンでコンパイルされ、結果のプログラムは同じ結果になります。異なるコンパイラーは異なることで優れているため、パフォーマンスは異なる場合がありますが、プログラムの基本的な動作は変わらないはずです。
ただし、不適切に作成されたソフトウェアは、実装固有の動作、または未定義の動作に依存する場合があります。組み込み型、またはプラットフォームのエンディアンネスについて仮定する場合があります。よく書かれたソフトウェアでさえ、選択したツールチェーンで利用できない非標準の拡張機能に依存する以外に選択肢がない場合があります。または、元のプロジェクト。
最終的には、作成者/ベンダーにソースコードの目的を尋ねる必要があります。たとえばVisual Studio 2015向けに特別に作成されており、Windows API機能が必要であると彼らが主張している場合は、おそらくそれに従う必要があります。しかし、彼らがそれが移植可能な標準C ++であると主張するなら、あなたが好きなコンパイラを使用してください。ベンダーが嘘をついていることが判明した場合に無料のヘルプを得ることができるように、購入契約にサポート契約が含まれていることを確認してください。
購入したコードと同じバージョンのC ++を使用する必要がありますか?それは2014を使用していない場合、我々は可能性があることのいくつかの機能を使用したいのですが、異なるバージョンを混合しながらいくつかの問題があるかもしれないではない場合。
多分。多分。
C ++ 03はほとんどの部分で上位互換性があるため、コードがC ++ 03であれば、問題は発生しそうにありません。(ただし、微調整が必要になる場合があります。)
しかし、C ++ 11およびC ++ 14で導入された機能には下位互換性がないため、ベンダーがC ++ 11ラムダなどを使用し、C ++ 03コンパイラでコードをビルドしようとすると、動作しません。
理論上はもちろん、特に言語バージョンは重要ではありませんが、コンパイラのバージョンが異なると異なるオブジェクトコードが生成され、タイミングの違いなどが発生する可能性が考えられます。
絶対に。期待される結果を得るためにコードが特定の実装に大きく依存している場合、責任を負ってそのことを通知するのはベンダー次第です。私たちは現実の世界に住んでいるので、私は勤勉で、最初に尋ねることをお勧めします。
そして、私は他の人が言ったことをエコーします:何らかの種類のサポート手段を持っていることを確認してください。そうすれば、彼らがこれらの質問に対する回答のいずれかを意図的にまたはそれ以外で誤って伝えた場合、結果として生じるコストを背負わないことになります。