在任意一门编程语言中,函数调用基本上都是非常常见的操作;
我们都知道,函数是由调用栈实现的,不同的函数调用会切换上下文;
但是,你是否好奇,对于一个函数调用而言,其底层到底是如何实现的呢?
本文讲解了函数调用的底层逻辑实现;
相关文章:
在任意一门编程语言中,函数调用基本上都是非常常见的操作;
我们都知道,函数是由调用栈实现的,不同的函数调用会切换上下文;
但是,你是否好奇,对于一个函数调用而言,其底层到底是如何实现的呢?
本文讲解了函数调用的底层逻辑实现;
相关文章:
由于历史原因,C++存在多个厂商的编译器,主流的包括GCC、G++、MSVC、clang等;
本文介绍了这几个编译器之间的关系,以及各个编译器常用的命令参数;
有时候我们有需要查看代码对应汇编的需求,此时可以使用 Compiler Explorer 在线实时查看;
网址:
Github 开源仓库地址:
在前面的文章《深入理解C++中的move和forward》中,我们提到了为了避免对数据进行复制,在C++11中增加了move语义;
本文继续这个话题,来聊聊关于编译器优化中的RVO;
关于前一篇文章:
源代码:
如果远程的分支删除,本地会存在一个追踪的远程已经不存在的一个分支origin/xxx;
如果这种分支太多,本地的分支看起来会特别乱;
本文讲解了如何管理Git在本地的远程分支追踪;
GoogleTest是Google开源的一个测试框架,使用这个框架我们可以很方便的对我们的项目进行测试;
本文讲述了GoogleTest的基本使用;
源代码:
在C++11标准之前,C++中默认的传值类型均为Copy语义,即:不论是指针类型还是值类型,都将会在进行函数调用时被完整的复制一份!
对于非指针而言,开销及其巨大!
因此在C++11以后,引入了右值和Move语义,极大的提高了效率;
本文介绍了在此场景下了两个常用的标准库函数:move和forward;
源代码:
默认情况下,我们在win10下使用vcpkg安装的库都是x86的,对于x64的库,我们还需要手动指定参数;
但是在x64大行其道的现在,我们更希望能默认安装x64的库,此时只需要配置环境变量即可:
VCPKG_DEFAULT_TRIPLET=x64-windows
流水账似的,记录一下五一假期都干了啥?
fmt库是一个先进的文本格式库,具有现代语言的特征,用来代替C的stdio和C++中的iostreams;
本文讲解了如何使用C++的开源库:fmt;
源代码:
开源库地址: