私は、Adaにモジュールを持ち、渡すパラメータ(スカラー値)と構造を通信するC++の多くのモジュールを持つアプリケーションで使用する通信ミドルウェアを設計しています。アプリケーションはMS Windows XPとWindows 7で動作し、C++パートはMSVC++ 2008で開発され、AdaパートはGPS/GNATを使用して開発されています。 Adaのバージョンは1995年ですが、新しいAda仕様を使用する可能性のあるコンパイラの移行(新しいバージョンのGPS/GNAT)の途中です。Adaバリアントレコードは、C++共用体とバイナリ互換性がありますか?
ミドルウェアはC++で書かれており、モジュール間で渡されるすべての型を含む共用体型を使用したいので、システム上で使用される各型に対して1つのput/get関数を指定する必要はありません。
質問は、C++のユニオンはAdaのバリアントレコードとバイナリ互換ですか?言い換えれば、C++の共用体をAdaコードに渡すと、Variantレコードとして読み取ることができますか? (またはその逆)
私はこれを可能にするために、いくつかの調整が必要になると思い...
おそらくプラットフォーム、コンパイラなどを指定しなければならないでしょう。 –
ありがとう、私たちの環境に関する情報 – Guarita