问题1 :以下陈述是否正确:
在c文件中,未标记为static的变量外部函数具有从其定义到文件末尾的范围。
问题2 :如果问题1的答案是 true ,那么当c程序编译成汇编代码时,在哪个部分中存储了问题1中提到的变量?
@Edit:
我问这个问题,因为我对标有静态变量的变量有点困惑,变量没有用静态标记。对于这两种变量,装配中的底板有什么不同,它们存放在哪里?如果它们都存储在数据部分,那么c如何确保标记为static的变量仅对定义它的文件可见。
@Answer:
根据答案&来自莫斯科的 @Vlad 的评论,对问题1的回答是正确的,问题2的答案是“数据部分”,以及staic变量仅对文件定义的可见原因是静态变量具有内部链接,以确保它在声明它的编译单元外部不可见。
答案 0 :(得分:1)
根据C标准(6.2.1标识符范围)
4每个其他标识符的范围由其放置位置决定 声明(在声明者或类型说明符中)。如果是声明者或 声明标识符的类型说明符出现在any之外 块或参数列表,标识符有文件范围,其中 终止于翻译单元的末尾。
这是你第一个问题的答案。
至于第二个问题,那么变量存储在数据部分并具有静态存储持续时间。
编辑:使用存储类说明符static
声明的变量具有内部链接,它们在定义它们的编译单元外部不可见。