假设以下头文件对应于(例如)共享库。导出的函数需要一个指针在此头中定义的自定义结构:C编译器之间的结构对齐和可移植性
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
如果共享库使用一个编译器构建,然后从与另一个编译器构建的C代码用它可能不是因为不同的工作内存对齐,如Memory alignment in C-structs建议。那么,有没有办法让我的结构定义可以跨同一平台上的不同编译器使用?
我特别感兴趣的是Windows平台(显然它没有明确定义的ABI),但也很想了解其他平台。
不,除非有人向你保证。 – 2012-04-24 12:50:49
没有重复。至少不是所选问题。这个可以独立运作。 – 2012-04-24 13:05:34
包含单词“struct alignment”的任何问题是否与其他问题的副本自动重复,即使与该问题无关? – 2012-04-24 14:28:36