C 语言结构体的作用域

问题描述 投票:0回答:2

有人可以简单地解释一下这是什么意思吗?

结构的作用域从其出现在类型说明符中开始,一直持续到翻译单元的末尾(对于外部级别的声明)或块的末尾(对于函数内的声明)”

《C,参考手册》 作者:Samuel Harbison

c struct scope global
2个回答
0
投票

将代码中的“结构”视为带有标签的框,您可以在其中放置各种类型的数据。您创建的此框的“范围”指定您可以在代码中的何处使用和访问它。如果您在函数之外构造该框,则可以在整个程序的任何位置使用该框。但是,只有在函数内部创建该框才能使用。


0
投票

编译器遍历您的代码并遇到结构体定义。

这是结构体出现的地方,并且被编译器知道和识别(作用域开始)。

翻译单元通常是.c 文件。因此,在编译器完成编译 .c 文件之前,您的结构是已知的。

如果您在块(例如函数)内声明了该结构,则它仅在该函数内部已知,并且将超出外部范围。

如果您的结构体是在 .h 文件中定义的,则该 .h 文件的内容将被复制到您执行“#include "file.h"”的任何位置。因此,您的结构在它所包含的每个翻译单元(文件)中都是已知的。

© www.soinside.com 2019 - 2024. All rights reserved.