我正在阅读Brian W. Kernighan和Dennis M. Ritchie的著作《 C编程语言》。
在A.8.9节中,这些书说:
可以在内部范围内重新声明Typedef名称,但是必须提供一组非空的类型说明符。例如,
extern Blockno;
不重新声明Blockno,而是重新声明extern int Blockno;
。
我感觉自己理解了,extern Blockno;
但这是什么意思extern int Blockno;
呢?
当我尝试这样做时,出现编译错误,但我仍然不明白这本书的含义!
他的意思是可以重新声明typedef名称。例如,如果重新声明发生在内部范围内,则它可以是变量名。
他指出,这样的变量声明
extern Blockno;
是不正确的。变量应具有类型说明符,该类型说明符是声明应指定所声明的实体具有哪种类型。早期将类型int用作默认类型。
因此,正确地编写以声明类型为int的对象是正确的,例如
extern int Blockno;
也就是说,此声明在本地范围内引入了Blockno
int类型的变量。存储类说明符意味着此声明引用Blockno
具有外部或内部链接的已定义对象。
考虑以下演示程序
#include <stdio.h>
int Int = 10;
int main(void)
{
typedef int Int;
{
extern int Int;
printf( "Int = %d\n", Int );
}
return 0;
}
它的输出是
Int = 10
块范围内的声明
extern int Int;
隐藏Int
在外部作用域中声明的typedef名称,并引用该声明
int Int = 10;
在全球范围内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句