Für diese vereinfachte Testfall:Was bedeutet die Warnung "Padding-Klasse 'Tester' mit 4 Bytes"?
#include <map>
class Tester {
int foo;
std::map<int, int> smap;
};
int main() {
Tester test;
return 0;
}
ich die folgende Compiler-Warnung erhalten:
$ clang++ -std=c++98 -Weverything test.cc
test.cc:5:24: warning: padding class 'Tester' with 4 bytes to align 'smap' [-Wpadded]
std::map<int, int> smap;
^
Kann mir jemand erklären, was diese Warnmittel, und, wie ich sollte es ansprechen?
Es bedeutet, dass Sie zu viele Warnungen aktiviert haben. :) –
Ja, Struct Padding ist eine * Funktion *, nicht etwas, vor dem man warnen sollte. Ich nehme an, die Flagge ist da, so dass Leute, die das * genaue * Layout ihrer Strukturen im Speicher wissen müssen, explizites Padding hinzufügen und gewarnt werden können, wenn sie welche verpasst haben, aber das ist überhaupt kein normales Szenario. – hobbs
@RetiredNinja Heilige Kuh Mann, Weg, um Ihren Namen vollständig darzustellen :) – bobobobo