Может ли запись варианта Ada быть двоично совместимой с объединением C ++?

Я разрабатываю коммуникационное ПО промежуточного слоя для использования в приложении, которое имеет модуль в Ada и множество модулей на C ++, который передает передаваемые параметры (скалярные значения) и структуры. Приложение работает в MS Windows XP и Windows 7, часть C ++ разрабатывается в MSVC ++ 2008, часть Ada разрабатывается с использованием GPS / GNAT. Версия Ada - 1995 год, но мы находимся в процессе миграции компилятора (более новая версия GPS / GNAT) с возможностью использования более новой спецификации Ada.

Промежуточное ПО пишется на C ++, и я хотел бы использовать тип объединения, содержащий все типы, которые передаются между модулями, поэтому мне не нужно указывать одну функцию put / get для каждого типа, который используется в системе.

Вопрос в том, совместимы ли бинарные соединения C ++ с записями вариантов Ada? Другими словами, если я передаю объединение C ++ в код Ada, сможет ли он прочитать его как запись Variant? (и наоборот)

Я думаю, что для того, чтобы это стало возможным, потребуются некоторые корректировки ... (Например: объединения C ++ не содержат члена, который описывает его содержимое, в то время как записи вариантов Ada содержат)

7
задан timrau 25 September 2012 в 17:00
поделиться