Почему этот код недействителен?typedef и спецификаторы непростого типа
typedef int INT;
unsigned INT a=6;
тогда следующий код действителен
typedef int INT;
static INT a=1;
?
По моему пониманию unsigned int
не является "simple type specifier"
и поэтому код плохо сформирован. Хотя я не уверен.
Может ли кто-нибудь указать на соответствующий раздел Standard
, который делает первый код недействительным (и второй код действителен)?
EDIT
Хотя Johannes Schaub's ответ, казалось правильным и точки (он удалил свой ответ BTW) Я принял ответ Джеймс Каррен за его правильности и точности.
Из любопытства, зачем вы это делаете? Не так уж много причин для этого переопределения. 'typedef unsigned int UINT;' может иметь больше смысла, хотя .... – JAB
Да JAB Я знаю, что на самом деле я бы никогда не писал такой код практически. Однако мне любопытно, почему не работает первый код? Поэтому вопрос также был отмечен как «адвокат языка». –
Я знаю, что это не основной вопрос, но вы можете написать «std :: make_unsigned :: type» (см. Http://msdn.microsoft.com/en-us/library/ee361636.aspx?ppud=4) –
Tomaka17