Ich verwende g ++, um Code mit gepackten Feldern zu kompilieren. Ich erhalte jedoch einen Fehler, wenn ich versuche, einen Verweis auf ein gepacktes Feld zurückzugeben.
Beispiel:
%Vor%ergibt einen Fehler:
%Vor%Warum kann ich keine Referenz auf ein gepacktes Feld zurückgeben?
Es gibt einen gcc-Fehlerbericht Das gepackte Feld kann nicht gebunden werden , das deckt dies ab und es heißt:
Die C ++ - Spezifikation (C ++ 03, Abschn. 3.9, 3.9.1, 3.9.2) ist sehr klar, dass T und "Zeiger auf T" implementierungsspezifische Ausrichtungsanforderungen haben. Wenn Sie einen "Zeiger auf T" haben, können Sie davon ausgehen, dass es die Ausrichtungsanforderungen erfüllt. Ich bin sicher, dass die C-Spezifikation eine ähnliche Sprache hat.
Im folgenden Fall könnte der folgende Code die Ausrichtungsanforderungen verletzen
Sie schlagen eine Problemumgehung mit dem alignment
-Attribut vor, um Ihren eigenen ausgerichteten Typ zu definieren, aber es sieht nicht so aus, als ob es funktioniert.