Предполагается, что следующий заголовочный файл соответствует, например, разделяемой библиотеке.Экспортируемая функция принимает указатель на пользовательскую структуру, определенную в этом заголовке:
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
Если разделяемая библиотека создается с помощью одного компилятора, а затем используется из кода C, созданного с помощью другого компилятора, она может не работать из-за другого выравнивания памяти, т.к. Предлагается выравнивание памяти в C-структурах. Итак, есть ли способ сделать определение моей структуры переносимым между разными компиляторами на одной платформе?
Меня интересует конкретно платформа Windows (очевидно, у нее нет четко определенного ABI), хотя было бы любопытно узнать и о других платформах.