¿Por qué este código no es válido?typedef y especificadores de tipos no simples
typedef int INT;
unsigned INT a=6;
mientras que el código siguiente es válida
typedef int INT;
static INT a=1;
?
Según mi entender unsigned int
no es un "simple type specifier"
por lo que el código está mal formado. No estoy seguro sin embargo.
¿Alguien puede señalar la sección relevante del Standard
que hace que el primer código no sea válido (y el segundo código sea válido)?
EDITAR
Aunque Johannes Schaub's respuesta parecía ser correcta y al punto (se había borrado su respuesta BTW) acepté la respuesta de James Curran para su corrección y precisión.
Por curiosidad, ¿por qué harías eso? No hay muchas razones para esa redefinición. 'typedef unsigned int UINT;' podría tener más sentido, aunque .... – JAB
Sí JAB Sé que, en realidad, nunca escribiría ese código prácticamente. Sin embargo, tengo curiosidad por saber por qué no funciona el primer código. Entonces la pregunta también ha sido etiquetada 'language-lawyer'. –
Sé que este no es el tema principal, pero puede escribir "std :: make_unsigned :: type" (vea http://msdn.microsoft.com/en-us/library/ee361636.aspx?ppud=4) –
Tomaka17