C/C++编程笔记:如何理解C语言中的嵌套函数,零基础也看得懂

C语言不支持嵌套函数,但在GCC扩展下可以通过auto关键字声明。嵌套函数仅能访问全局变量,其实际实现依赖于Trampoline技术,用于保持对容器函数局部变量的正确访问。当嵌套函数不引用容器变量时,它会被提升为普通函数。了解这些概念有助于提升C语言编程技能。
摘要由CSDN通过智能技术生成

一些程序员认为在另一个函数内部定义一个函数称为“嵌套函数”。但是现实是它不是嵌套函数,它被视为词汇作用域。在C语言中,词法作用域无效,因为编译器无法达到/找到内部函数的正确内存位置。

C不支持嵌套函数,因为我们无法在C中的另一个函数内定义一个函数。我们可以在一个函数内声明一个函数,但它不是嵌套函数。

由于嵌套函数定义无法访问周围块的局部变量,因此它们只能访问包含模块的全局变量。这样做是为了不必在目录中查找全局变量。与C中一样,有两个嵌套作用域:本地和全局(除此之外,内置函数)。因此,嵌套函数只有有限的用途。如果尝试在C中使用嵌套函数,则将得到编译时错误。

输出:

编译时错误:未定义对“视图”的引用

GNU C编译器的扩展允许声明嵌套函数。在GCC扩展名下的嵌套函数的声明需要以auto关键字为前缀/开头。

另外,gcc主要通过Trampoline实现函数嵌套功能,那么什么是Trampoline呢?

Trampolin

游戏分里外两个部分组成,里部分(用户不可见) 通过里部分执行判断,地图数组更改,和各种值的改变。更改完里部分再根据相应变化更改表部分。(用户可视部分)表部分的打印通过gotoxy去到相应坐标再printf打印出字符,通过文本函数改变文字字体颜色与文字背景颜色与字符组合实现图形界面。 程序通过 计数器+循环判断 的思想,类似单核cpu的多线程实现(单线程在不同程序/函数间来回执行)省去了多线程。(具体过程在功能设计与描述有详细描述) 另AI实现与加强依赖于rand随机函数的运用,进一步强化AI,增加游戏乐趣 功能方面,游戏参考于80年代任天堂红白机(FC/FamilyComputer)上的游戏坦克大战(Battle City),包括地图,游戏模式等等(当时的游戏直接烧在电路板上)。所以游戏平衡方面已经有了很好的参考,无需再花大量时间测试平衡性。 但诸如地图的树林元素,随机道具等没有实现。但较之原版,该游戏由C/C++编写PC运行,由字符界面实现游戏画面。原版一辆坦克的子弹未消失之前不能发射第二颗。导致子弹打击远处CD长,近处CD短。该游戏每个子弹都有相同CD,子弹未消失只要CD达到即可发射第二颗,第三颗…增加了真实性,相较于原版是个改进。且考虑到PC性能不一内置了游戏速度调整。玩家可根据PC性能调整至合适的速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值