摘要:
intro 移动端的设备的应用被切到后台之后,可能就无法收到对方socket关闭连接的FIN。当应用从后台切回前台之后,可能还是继续通过这个socket来尝试向对方一个已经不存在的socket发送数据。 这种情况下,该应用网络层将会经历怎样的波折呢? 接收方 如果报文指定的socket不存在,流程会 阅读全文
摘要:
intro 毫无疑问,每个对象只有(最多)一个虚函数表指针,但是每个类是否只有一个虚函数表呢? 从两个比较常用的C++功能可以引申到这个疑问: 虚函数调用 一个派生类对象转换为基类指针后,通过该基类指针来调用虚函数,调用到的是派生类的虚函数。这个通过虚函数表很容易实现,但是调用虚函数的时候不仅仅是找 阅读全文
摘要:
intro 在使用YCM完成c++输入提示(complete)时可以注意到一个细节:通常只有后输入“.”,"->","::"的时候提示的才是提示字段的类型信息。对于函数,提示包含了函数的参数类型等信息;对于数据成员,提示中也包含了类型信息。 对应地,其它情况下尽管提示中可能会包含变量名,但是不会在p 阅读全文
摘要:
intro 在使用YCM的自动提示功能时,可以注意到选择complete提供的条目时,窗口的上面还有一个小窗口提示这个函数的声明信息,包括了函数的参数列表和类型信息。 这个对写代码非常有用,对于一段时间不看的函数,很容易记不得函数的参数列表和各自的类型信息,以至于在官方issue中希望提供一个可以显 阅读全文
摘要:
intro 在vim的入门介绍中,明确说明了vim是一个"文本编辑器"(text editor)而不是一个程序编辑器,和C/C++的预处理(preprocessor)一样,vim本身并不理解程序的结构。 Introduction intro Vim stands for Vi IMproved. I 阅读全文
摘要:
intro 在使用模板声明中,有一个经典的问题就是如何区分模板声明中的">>"是右移操作符还是一个模板声明的结束标志。好在新的C++标准削弱了这个很强的限制,而是允许reasonable的、根据上下文对符号进行不同的解析。 C++11 improves the specification of th 阅读全文
摘要:
intro 在看vim缩进相关的代码中,有些地方的注释特意强调了对于“K&R style function"相关的内容。例如,在find_decl()函数的注释中。 ///@file: normal.c // For finding a local variable and the match is 阅读全文
摘要:
intro 当使用vimdiff来获取另外一个文件的diff内容时,在Ex模式下使用的是diffget,但是在normal模式下对应的cmd却不是对应的dg而是另一个do(diff obtain),这个都少有些意外。 单单的对于"为什么vim使用do而不是dg命令来获得diff?"这个问题,其实在v 阅读全文
摘要:
intro 在使用vim的时候,一个非常常用的功能就是搜索功能。 搜索 在缺少工程级别搜索的情况下,搜索通常不是一次完成的:通常的场景是提供一个最明显的关键字(并且忽略大小写),然后从结果中再缩小搜索范围,直到找到搜索结果。在这个迭代的过程中,可能需要从上次的输出中拷贝一部分、简单编辑之后再次搜索。 阅读全文
摘要:
intro 由于C不支持协程,C++只有在最近的C++标准(C++20)中才支持协程,如果希望在C++中支持协程通常需要使用第三方库。针对这种问题,可能有些实现在C++中嵌入lua脚本,利用lua的原生协程机制来达到协程效果;或者干脆使用go这种内置包含了协程的语言。 协程 问题 私有堆栈 协程的一 阅读全文