Angenommen, die folgende Header-Datei entspricht z. B. einer gemeinsam genutzten Bibliothek. Die exportierte Funktion nimmt einen Zeiger auf eine benutzerdefinierte Struktur in diesem Header definiert:C struct Alignment und Portabilität über Compiler hinweg
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
Wenn die gemeinsam genutzte Bibliothek gebaut wird einen Compiler und dann von C-Code mit einem anderen Compiler gebaut verwendet wird, ist es vielleicht nicht wegen eines anderen Arbeit Speicherausrichtung, wie Memory alignment in C-structs vorschlägt. Gibt es eine Möglichkeit, meine Strukturdefinition über verschiedene Compiler auf derselben Plattform portierbar zu machen?
Ich interessiere mich speziell für Windows-Plattform (anscheinend hat es keine gut definierten ABI), obwohl neugierig wäre, auch über andere Plattformen zu lernen.
Nein, es sei denn jemand hat Ihnen das garantiert. –
Kein Duplikat. Zumindest nicht von der Frage ausgewählt. Dieser kann alleine stehen. –
Ist eine Frage, die Wörter "struct alignment" enthält, automatisch ein Duplikat dieser anderen Frage, selbst wenn es nichts damit zu tun hat? .. –