全局变量与函数内的静态局部变量名字相同

在 Keil C 语言(标准 C 行为)中,如果全局变量与函数内的静态局部变量 名字相同,在该函数内部,使用的是静态局部变量

原因:

C 语言的局部变量会遮蔽(shadow)同名的全局变量 。静态局部变量虽然生命周期长,但其作用域仍局限于函数内部,优先级高于全局变量。

如何访问被遮蔽的全局变量?

在函数内部,若仍需访问同名全局变量,可使用 ::(仅限 C++)或在 C 中只能通过全局指针参数传递等方式,标准 C 没有直接的作用域解析运算符。Keil C51 针对 8051 扩展中也没有直接访问的语法,需要避免命名冲突。

结论: 函数默认使用自己作用域内的静态局部变量,不会意外使用全局变量。

相关推荐
老猿讲编程20 小时前
【Eclipse OpenSOVD学习之十】客户端 SDK
学习·eclipse·嵌入式软件·车载·sovd
泛联新安2 天前
FPGA功能仿真:VShark正式亮相,换仿真器不用换习惯
fpga开发·编译·仿真·嵌入式软件·代码漏洞扫描
老猿讲编程2 天前
【Eclipse OpenSOVD学习之六】 数据访问层(DataProvider)
学习·eclipse·嵌入式软件·车载·sovd
泛联新安2 天前
FPGA仿真加速:AccEmu正式亮相,一周的回归,一天跑完
机器学习·fpga开发·数据挖掘·回归·自动化·嵌入式软件·代码漏洞扫描
花 满 楼3 天前
5777M的eMIOS 封波(ODIS)功能实现:一个通道输入沿触发,冻结另一个通道 PWM 输出
mcu·嵌入式软件·emios
youcans_3 天前
【嵌入式软件AI编程】03. STM32 VS Code 开发环境与工具链
stm32·单片机·ai编程·嵌入式软件·claude code
老猿讲编程4 天前
【Eclipse OpenSOVD学习之二】 SOVD 协议原理与标准背景
学习·eclipse·嵌入式软件·车载·sovd
码农小韩6 天前
Linux应用开发(二)——Linux的文件IO
linux·嵌入式软件·嵌入式操作系统·linux应用
程序员与背包客_CoderZ1 个月前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
xz驱动分享1 个月前
Linux DMA 子系统学习笔记
linux·dma·rk3588·嵌入式软件