gpt4 book ai didi

c - 在 C 中重新声明 typedef

转载 作者:行者123 更新时间:2023-12-04 10:59:57 24 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

1年前关闭。




Improve this question




我正在阅读 Brian W. Kernighan 和 Dennis M. Ritchie 所著的《C 编程语言》一书。

在 A.8.9 部分,这些书说:

Typedef names may be redeclared in an inner scope, but a non-empty set of type specifiers must be given. For example, extern Blockno; does not redeclare Blockno, but extern int Blockno; does.



我感觉我理解了 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;

隐藏 typedef 名称 Int在外部作用域中声明并引用声明
int Int = 10;

在全局范围内。

关于c - 在 C 中重新声明 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com