c ++ - enum deklaration i Windows til Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en C + + -deklaration:


enum SETTINGS:UINT32
{
     a=1,
     b=2,
};



  1. Hvad er meningen med: UINT32?

  2. Hvordan kan jeg svide denne erklæring til Linux?


Bedste reference


Dens del af den nye C ++ 0x måde at erklære enums på


enum <EnumTypeName> [: <Optinal-Type>] { <ValueList> };


Som standard er en enum repræsenteret af et helt tal.

Den nye syntaks giver dig mulighed for at definere hvilken type der bruges til at repræsentere enummen


I dette tilfælde indikerer det, at den enumunderliggende repræsentation skal være af typen UINT32. Hvad dette betyder vil afhænge af, hvad makroen UINT32 er blevet defineret til at være. Men det er nok et helt tal på mindst 32 bit og er usigneret. :-)


Se Bjornes beskrivelse af de nye enum ting:

http://www2.research.att.com/~bs/C++0xFAQ.html#enum[5]

Andre referencer 1


Her specificerer :UINT32 syntaksen den underliggende enumtype. Men dette er ikke standard C ++ (i det mindste ikke standard C ++ 03), men en Visual Studio-udvidelse: g ++ vil sandsynligvis afvise det, og det skal du også.



  • Se C ++ Opgørelseserklæring om MSDN for en beskrivelse af denne syntaks

  • Se denne Wikipedia side vedrørende C ++ 0x kommende ændringer til enum erklæringer



EDIT Som påpeget i Martin York's kommentarer understøtter g ++ denne syntaks siden version 4.4, så jeg antager, at det eneste problem for en Linux portage ville være UINT32 er ikke standard. [6]]] [7]

Andre referencer 2


u=usigneret
int=heltal
32=32 bit


læs dette: 'Uint32', 'int16' og lignende; er de standard c ++?