¿Hay alguna manera de hacer que el tipo enum
sea sin firmar? El siguiente código me da una advertencia sobre la comparación firmada/no firmada.¿Hay alguna manera de hacer que el tipo `enum` no esté firmado?
enum EEE {
X1 = 1
};
int main()
{
size_t x = 2;
EEE t = X1;
if (t < x) std::cout << "ok" << std::endl;
return 0;
}
He tratado de forzar compilador que utilice el tipo subyacente sin signo de enumeración con lo siguiente:
enum EEE {
X1 = 1,
XN = 18446744073709551615LL
// I've tried XN = UINT_MAX (in Visual Studio). Same warning.
};
Pero eso sigue dando la advertencia.
Cambio constante a UINT_MAX
hace trabajar en GNU C++ que habían de ser de acuerdo con la norma. Parece ser un error en VS. Gracias a James por la indirecta.
relacionada, pero no duplicar: http://stackoverflow.com/questions/2579230/signedness-of-enum-in-c-c99-c-cx-gnu-c -gnu-c99 –
http://stackoverflow.com/questions/159034/ – sbi
@sbi, eso no es un duplicado, porque C++ Standard da una pista sobre cómo cambiar el tipo undelying a unsigned int. Y estoy tratando de usar eso. –