Gibt es eine Möglichkeit, den Typ enum
unsigniert zu machen? Der folgende Code warnt mich vor einem signierten/unsignierten Vergleich.Gibt es eine Möglichkeit, den `enum` -Typ vorzeichenlos zu machen?
enum EEE {
X1 = 1
};
int main()
{
size_t x = 2;
EEE t = X1;
if (t < x) std::cout << "ok" << std::endl;
return 0;
}
Ich habe versucht, Compiler zu zwingen, für Enum unsigned zugrunde liegenden Typen zu verwenden, mit dem folgenden:
enum EEE {
X1 = 1,
XN = 18446744073709551615LL
// I've tried XN = UINT_MAX (in Visual Studio). Same warning.
};
Aber das gibt immer noch die Warnung.
Ändern konstant UINT_MAX
macht es in GNU C++ arbeitet als den Standard entsprechend werden soll. Scheint ein Fehler in VS zu sein. Danke an James für einen Hinweis.
Verwandte, aber nicht duplizieren: http://stackoverflow.com/questions/2579230/signedness-of-enum-in-c-c99-c-cx-gnu-c -gnu-c99 –
http://StackOverflow.com/Questions/159034/ – sbi
@SBI, das ist kein Duplikat, weil C++ Standard einen Hinweis darauf gibt, wie man den Datentyp "Unlying" in "Unsigned Int" ändert. Und ich versuche das zu benutzen. –