Pra*_*rav 18 c c++ language-lawyer
为什么这段代码无效?
typedef int INT;
unsigned INT a=6;
Run Code Online (Sandbox Code Playgroud)
而以下代码有效
typedef int INT;
static INT a=1;
Run Code Online (Sandbox Code Playgroud)
?
根据我的理解unsigned int
不是一个"simple type specifier"
,所以代码是不正确的.我不确定.
任何人都可以指向Standard
使第一个代码无效(和第二个代码有效)的相关部分?
编辑
虽然Johannes Schaub的答案似乎是正确的并且到了重点(他已经删除了他的答案BTW)但我接受了James Curran的答案,因为它的正确性和准确性.
Jam*_*ran 29
typedef
s不像宏.它们不仅仅是文本替换.Typedef创建一个新的类型名称.
现在,当你说unsigned int
,这unsigned
不是一个修改者,它被添加到了int
.unsigned int
是完整的类型名称; 它碰巧有一个空间.
所以,当你说typedef int INT;
那时INT
是完整的类型名称.它无法修改.
static
(like const
)是一个存储类说明符.它实际上不是类型名称的一部分.
Sch*_*ron 12
归档时间: |
|
查看次数: |
551 次 |
最近记录: |