Ich habe eine C++ - Codebasis, die auf zwei Plattformen kompiliert, eine davon Visual C++ 2013. Die zweite Plattform unterstützt C++ 03 (und nicht C++ 11) . Die enum size-Implementierung im Compiler der zweiten Plattform verwendet die minimal benötigte Größe. VC++ - Implementierung verwendet 4 Bytes, auch wenn sie nicht benötigt werden.Verwenden von VC++ - Compiler-Flags zum Angeben der Enum-Größe
Ich möchte VC++ kompilieren die Enums als minimale Größe, ohne den Code zu ändern. Der andere Compiler beispielsweise kompiliert das nicht:
enum MyEnum : unsigned char {};
Ich suchte, konnte aber Compilerflags nicht finden, um dies zu unterstützen. Existieren sie?
Dieses schreckliche Idee hat ganz über ihn geschrieben. –
@CaptainObvlious Ich kann mir vorstellen, wie Sie ohne den Kontext, die Anforderungen oder die Rationalität zu verstehen, dass Sie genug Daten haben, um das zu schließen. Was hat das mit der Qualität der Frage selbst zu tun? – Asaf
Ja, ich kann daraus schließen, dass dies das Potenzial hat, eine ganze Reihe von Dingen zu brechen. Das Ändern der Größe der "Aufzählung" in einem globalen Bereich wirkt sich auf alles aus. Dies bedeutet, dass die Definition der'Enum'-Änderungen zwischen dem, was Ihr Code erwartet, und dem ursprünglichen Code erwartet wird. Wenn Sie gegen Quellcode bauen, sind die Probleme weniger offensichtlich, wenn Sie einfach nur schlechte Dinge mit der Bibliothek verbinden. Wenn eine Größe erwartet wird, wird wahrscheinlich jeder Code, der darauf angewiesen ist, kaputt gehen. Erwarten Sie, die Verwendung von _all_ 'enum' Typen zu überprüfen, und überprüfen Sie jedes Mal, wenn Sie auf neuere Bibliotheken aktualisieren. –