Dlaczego ten kod jest nieważny?Specyfikacja typedef i nietypowych typów
typedef int INT;
unsigned INT a=6;
natomiast następujący kod jest ważny
typedef int INT;
static INT a=1;
?
Zgodnie z moim zrozumieniem unsigned int
nie jest "simple type specifier"
i dlatego kod jest źle sformułowany. Nie jestem jednak pewien.
Czy ktoś może wskazać odpowiednią sekcję Standard
, która powoduje, że pierwszy kod jest nieważny (a drugi kod jest prawidłowy)?
EDIT
Chociaż Johannes Schaub's odpowiedź wydawała się być prawidłowa, a do punktu (miał usunięte jego odpowiedź BTW) przyjąłem odpowiedź James Curran za jego poprawności i precyzji.
Z ciekawości, dlaczego to zrobiłeś? Nie ma zbyt wiele powodów do tej redefinicji. 'typedef unsigned int UINT;' może mieć więcej sensu, chociaż ... – JAB
Tak, JAB Wiem, że właściwie nigdy nie napisałbym takiego kodu praktycznie. Jednak jestem ciekawy, dlaczego pierwszy kod nie działa? Tak więc pytanie zostało również oznaczone jako "język-prawnik". –
Wiem, że to nie jest główny temat, ale możesz napisać "std :: make_unsigned :: type" (zobacz http://msdn.microsoft.com/en-us/library/ee361636.aspx?ppud=4) –
Tomaka17