假设下面的头文件对应,例如一个共享库。导出的函数采用指向此标头中定义的自定义结构的指针:
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
如果共享库是使用一个编译器构建的,然后从另一个编译器构建的 C 代码中使用,则它可能由于内存对齐方式不同而无法工作,正如C-structs 中的内存对齐所暗示的那样。那么,有没有办法让我的结构定义在同一平台上的不同编译器之间可移植?
我对 Windows 平台特别感兴趣(显然它没有明确定义的 ABI),但也很想了解其他平台。