Ich habe eine C++ Deklaration:Enum-Deklaration in Windows auf Linux
enum SETTINGS:UINT32
{
a=1,
b=2,
};
- was ist die Bedeutung von: UINT32?
- Wie kann ich diese Deklaration zu Linux wechseln?
Ich habe eine C++ Deklaration:Enum-Deklaration in Windows auf Linux
enum SETTINGS:UINT32
{
a=1,
b=2,
};
u = unsigned integer int = 32 = 32 bit
dieses lesen: "Uint32", "int16" and the like; are they standard c++?
wie ist das zusammen? – sud03r
Wenn Sie nur ein wenig Zeit mit dem Lesen des Posts haben, würde Ihr Kopf verstehen, dass es mit dem Post verwandt ist, da Ihr Kommentar zum Eigentümer der Frage lautet. Natürlich ist es ein Makro. – Bourne
Ich denke, die Frage hier war, was 'enum_type [: optional-type] bedeutet, und nicht über uints und ints. – sud03r
Hier wird die Syntax :UINT32
gibt die zugrunde liegenden enum-Typ. Jedoch das ist nicht Standard C++ (zumindest nicht Standard C++ 03), sondern eine Visual Studio-Erweiterung: g ++ wird es wahrscheinlich ablehnen, und Sie sollten auch.
EDIT Wie in den Kommentaren von Martin Yorker zeigte, g ++ unterstützt diese Syntax seit Version 4.4, so dass ich denke, das einzige Problem für eine Linux-Portage wäre UINT32
nicht Standard.
G ++ unterstützt bereits die Syntax in Version 4.4 und höher. Aktuelle Version 4.5.1 –
@Martin York Danke, ich bearbeite meine Antwort, um diese Genauigkeit hinzuzufügen – icecrime
seinen Teil des neuen C++ 0x Weise erklärt enums
enum <EnumTypeName> [: <Optinal-Type>] { <ValueList> };
standardmäßig eine ENUM durch eine ganze Zahl dargestellt wird.
Mit der neuen Syntax können Sie optional den Typ definieren, der zur Darstellung der Enumeration verwendet wird
In diesem Fall gibt es an, dass die dem Enum zugrunde liegende Repräsentation vom Typ UINT32 sein sollte. Was das bedeutet, hängt davon ab, wie das Makro UINT32 definiert wurde. Aber es ist wahrscheinlich eine ganze Zahl von mindestens 32 Bits und ist unsigniert. :-)
Siehe Björnes Beschreibung der neuen Enum Sachen:
http://www2.research.att.com/~bs/C++0xFAQ.html#enum
Es gibt keinen Standard für die enum im Standard, dies ist speziell warum dieses neue Format eingeführt wurde. Sie können Deklarations-Enums weiterleiten, was zuvor nicht möglich war, da die gesamte Enumeration benötigt würde, um die Größe zu bestimmen. (Ich bezweifle jedoch nicht, dass int fast immer verwendet wird) –
@ edA-qa mort-ora-y: Tatsächlich gibt der Standard explizit an, dass enum durch einen Integer-Typ repräsentiert wird (und es gibt einige spezielle Regeln, die niemand außer dem Compilerschreiber interessiert sich). Der Standardwert ist die Implementierung, die den Integer-Typ definiert. Siehe Abschnitt 7.2 (Ich habe den Entwurf gelesen, der sofort dem C++ 03 Standard folgt, aber ich bezweifle, dass sich das geändert hat). –
Ich meinte, dass es nicht unbedingt den Typ "int" verwenden wird, es wird einfach einen der Integer-Typen verwenden. Das heißt, es kann basierend auf seinen Werten die gewünschte Größe für die Enumeration wählen: der Grund, warum es nicht vorwärts deklariert werden kann. –
Welche Version des gcc-Compiler Sie unter Linux verwenden? –