Я разрабатываю API, который должен быть двоично-совместимым, по крайней мере, между mingw и msvc ++.До сих пор я ограничивался использованием функции, которая принимает и возвращает примитивные типы данных или указатели на POD-структуры с унифицированными элементами (т. Е. Все элементы одного типа, что должно снизить риск несовместимого заполнения).
В некоторых случаях было бы удобно возвращать структуры по значению, так что вызываемому абоненту не нужно сохранять временную копию.Поэтому возникает вопрос: безопасно ли передавать структуры по значению в / из функций stdcall, когда вызываемый объект компилируется компилятором, отличным от вызывающего?Это относится и к менее свежим версиям msvc и mingw?Я был бы более уверен, что это так, но я обнаружил, в этой теме обсуждается проблема в этой конкретной ситуации с соглашением о вызовах cdecl, которое, по-видимому, было решено только в mingw 4.6.