摘要:
closure lexical scope 这篇文章虽然不长,但是厘清了一些基本的概念: 闭包的直观效果就是可以捕捉所在环境中的变量。 Closures are special functions that can capture the environment, i.e. variables wi 阅读全文
摘要:
问题 在UE的代码中,经常可以看到对于父类类型的引用,因为很多情况下都要先调用父类的同名函数。例如随便看下UE的部分代码,在实现自己序列化函数的时候先调用基类的序列化函数。 但是,尽管Super是一个非常顺数的功能(在行为树库behaviac数中也有super定义),但是C++并没有实现这种功能。这 阅读全文
摘要:
问题 C++的异常处理看起来是一个比较神奇的功能,能够在运行时穿越堆栈,从异常发生位置直达异常处理位置。通过gcc的代码可以看到,这个堆栈回溯的一个关键步骤是这个宏,其中又使用了gcc的内置指令__builtin_eh_return。网上关于__builtin_eh_return这个内置函数的资料较 阅读全文
摘要:
future/promise future提供了一个基于数据(future模板类型)的异步概念:对于一个类型T,可以在以后通过get接口获得这个类型T的变量。或者打个不太恰当的比方,当你获得一个future对象时,就获得了一个消费券(consumer):拿着这张券可以兑换(get)一个T类型的结果( 阅读全文
摘要:
寄存器 在软件开发过程中,Ctrl-C和Ctrl-V是程序员的核心技能,这就不可避免的涉及到复制,粘贴,删除。在windows环境下,大家习惯了只有一个系统剪切板,复制之后直接粘贴还是比较方便。在vim环境下,有更多的寄存器可以选择:26个字母(大小写分别对应不同用途),还有0——9共10个数字对应 阅读全文
摘要:
文档 对于一个(大型)软件来说,文档始终是一个重要功能。例如,vim内置的在线文档就十分轻便基于文本格式,使用普通编辑器查看也不影响阅读),这样让vim的使用非常丝滑。 UE作为一款游戏软件,同样内置了控制台命令,通过这些命令可以交互式执行控制台命令,查看/控制进程状态。更妙的是在输入的时候,控制台 阅读全文
摘要:
zero-page 操作系统给用户新分配的内容(通过mmap或者brk)都是清零过的,但是这些虚拟地址通常都是按需分配物理页面。这里的“按需”的需求可能是读取,也可能是写入。如果只是读取,只要保证读取内容是零即可,在MMU的基础上,可以让“所有”虚拟地址都映射到内容为0的物理页面中。 这样如果申请的 阅读全文
摘要:
keyword go语言介绍中标榜的一个重要特点是语法简单,这里有一个不同语言关键字的个数,同样是为了防止网页打不开或者丢失,这里单独复制一份: C (ANSI (C89)) (32 keywords) C (C11) (44 keywords) C (C17) (44 keywords) C (C 阅读全文
摘要:
问题 众所周知,UE的启动模块位于Engine\Source\Runtime\Launch文件夹,这个文件夹下包含了所有UE支持的平台类型,但是Launch.Build.cs文件并没有特殊的说明来确定使用哪个子文件夹的内容。 尽管从源代码组织结构上看可以想当然的知道只会选择当前构建平台,但是UE是如 阅读全文
摘要:
问题 C++一个经常被人诟病的地方就是编译速度,大型C++项目(例如chrome)的构建时间会很长,编译和链接都是如此。这使得大型C++项目的开发迭代比较痛苦。 作为一种新生的语言,go在设计的时候就考虑到了构建时间的问题,力图提高编译速度。 那么这种加速又是如何实现的呢? gcc说明 当前的go编 阅读全文