摘要:
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这种内置包含了协程的语言。 协程 问题 私有堆栈 协程的一 阅读全文
摘要:
intro 通常使用gdb调试器,希望知道某个系统调用的发生时机,直接在该系统调用打断点即可。这里有一个假设就是这里使用的glibc库的实现,但是go生成的可执行文件就是一个单独的、静态链接文件,在go生成文件中,gdb的时候并没有可以打断点监测系统调用的方法。 我想在go中大概率有对特定系统调用打 阅读全文
摘要:
intro 在一个复杂的项目中,免不了需要动态生成文件,此时可能就需要用到cmake的add_custom_command命令,这个命令可以生成cmake识别的输出文件,并作为构建过程中其它命令的依赖和输出。 add_custom_command(OUTPUT output1 [output2 .. 阅读全文