自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++ 程序员30分钟速通Rust指南(待补充)

30分钟从C++到Rust

2023-07-28 14:06:29 366

原创 CMake 自定义工具链在rh7.9上使用高版本gcc体验c++17特性

本文建立在在上一篇文章的基础上 《编译安装GCC11.2 包教包会》展示了如何让CMake使用自定义工具链,在低版本gcc机器上使用高版本gcc,例如在RHEL 7.9系统(默认gcc 4.8.5)上使用gcc 11.2的方法。

2023-07-18 09:33:41 247

原创 llvm和clang环境配置(续篇)

关于llvm和clang开发环境的配置之前已经发过一篇,当时是因为llvm官网给的文档省略了很多重要信息,需要额外补充一些信息才能完成环境配置。时隔许久,重新打开llvm官网,发现他们的文档已经更新了,写的非常详细,专门列举了一节用来解释如何在远古linux发行版上编译安装llvm+clang的方法。内容大体上和我上篇差不多,但是有些细节需要注意,是我上篇内容中遗漏的。

2023-01-19 17:49:37 1417

原创 clang和llvm环境搭建及使用详解

最直接的方案是从LLVM-project的Github Release页面上下载编译好的二进制包,我的环境是ubuntu-20.04 WSL2,因此可以直接开箱即用。如果是远古系统,例如CentOS7之类的,需要先编译一套GCC-11.2工具链,然后再通过GCC工具链编译LLVM+Clang;

2022-03-06 17:55:53 3703

原创 Ubuntu20.04 LTS 安装GCC11.2教程,包教包会!

GCC 11.2 安装前置条件首先把Ubuntu提供的各种构建工具都给他装上sudo apt install build-essential manpages-dev software-properties-common gcc g++ make bison binutils gcc-multilib flex下载源码包可以到gnu镜像列表找到离你最近的镜像站,下载源码包。注意一定要下载编译所需的依赖包。如下:(我这边最快的是jp的镜像站,每个人情况不同,根据实际情况替换其中的ftp.tsuk

2021-08-27 09:50:25 12189 7

原创 nlohmann-json库使用简介

nlohmann-json库使用简介GitHub地址 nlohmann/json简介JSON库千千万,为何nlohmann/json库那么热门呢?原因在于它的设计理念非常人性化:提供符合直觉的语法:可以像STL容器一样来使用,提供了丰富而且符合直觉的接口;简易的导入方式:仅头文件(header-only)形式的JSON库,方便整合到项目中;严谨的测试:简而言之就是不用担心库的解析出问题,准确率贼高。缺点也是有的:不追求内存的效率;不追求性能;因此,在不需要高性能的场景下,使用这个

2021-08-18 20:48:37 2233

原创 C++模板元编程基础之“std::enable_if”的使用

std::enable_if典型用法代码示例通过返回值使用:template<class T,class... Args>typename std::enable_if<std::is_trivially_constructible<T,Args&&...>::value>::type construct(T* t,Args&&... args) { std::cout << "construct

2021-08-03 16:30:02 1448

原创 Muduo网络库核心梳理

Muduo网络库Muduo网络库本身并不复杂,是一个新手入门C++面向对象网络编程的经典实战项目。但是,新手在刚刚上手读代码的时候,非常容易陷入代码的汪洋大海,迷失方向。本文旨在简要梳理Muduo网络库的核心内容,帮助初学者快速上手源码阅读。第一部分:概述通过学习Muduo网络库的源码,初学者可以掌握的主要知识点有:EventLoop事件循环的实现方式;Reactor反应堆模式在TCP网络通信编程中的基本实现方式;(可以从《UNIX网络编程》中参考各种通信模型)Socket API,Epoll

2021-07-24 15:11:14 4086 2

原创 C++设计模式由浅入深(四)——swap抽丝剥茧

四、深入浅出剖析swap1 STL与swapswap操作被广泛应用与C++标准库中。所有的标准模板库(STL)容器都提供了swap函数,并且同时支持非成员版本的函数模板std::swap。swap在STL的算法中也有广泛应用。标准库也是常常被用来实现与之类似自定义功能的模板库。因此,我们将会开始学习swap操作并且仔细研究标准库提供的函数细节。1.1 swap与STL容器从概念上讲,swap所做的行为就如同下面所示的操作:template <typename T> void swap(

2021-06-12 17:57:19 1969 1

原创 C++设计模式由浅入深(三)—— 内存所有权

三、内存所有权内存的错误管理是C++程序中最常见的问题之一。此类问题发生的原因多数是源于对内存所有权概念的模糊。于是,我们的程序中就出现了诸如:内存泄漏,访问未经初始化的内存,内存超限使用,以及其他难以排错的问题。现代C++中存在一套内存所有权管理的惯用法,这些方法允许程序员清除地表达他们对于内存所有权方面的设计意图。这样一来,我们就能更容易地写出正确分配、访问以及释放内存的优良代码。以下为本章中将要讨论的主题:什么是内存所有权?一个良好的资源所有权设计应该是什么样的?什么时候需要质疑自己关于资

2021-06-12 17:55:07 966 1

原创 C++设计模式由浅入深(二)—— 类模板和函数模板

二、类和函数模板C++的模板编程特性是一个又大又复杂的话题,有许多著作专门传授这种特性和技巧。在本书中,我们会用到许多C++中的高级泛型编程特性。那么我们该如何去理解贯穿次数中的这些语言结构呢?本章采用了非正式的方法,抛弃那些精准的定义,我们通过例子来演示如何使用模板以及解释这些语言特性具体做了什么。如果你觉得在这里遇到了知识盲区,我建议可以通过阅读关于C++语法和语义的专著来加深你的理解。当然,如果读者想要知道精准的定义,可以参考C++标准文档。下面是本章将要讨论的主题:C++中的模板类模板和函

2021-06-05 11:01:34 312

原创 C++设计模式由浅入深(一)—— 继承和多态

一、继承和多态C++首先是一个面向对象的语言,对象是C++程序的基石。通过类的继承和派生,软件工程师可以自由表达对软件系统中各个部分之间的关系与交互逻辑,定义各个组件之间的接口和实现,有秩序地组织起数据结构和代码。本书的目的不是为了教授C++语言,本章的要义是为了帮助读者理解C++语言特性中与类和继承相关的知识,有助于后续章节的展开。因此,我不会事无巨细地描述C++中类及其相关工具的具体用法,而是会介绍贯彻本书中的基础概念和语言结构。本章我们将要讨论:C++中的类是什么?它在C++语言中扮演什么样的

2021-06-04 22:21:40 621 1

原创 关于STL容器vector与移动构造函数的小坑

最近在做一个线程类,考虑到将来会用STL容器来存放线程类的对象(后来思考了一下存智能指针也许会更好,详见后文分析),因此在设计线程类的时候,就主动声明了复制构造函数和左值引用赋值运算符为delete。然后手动实现了移动构造函数和右值引用赋值运算符,大概如下://因为考虑到线程类可能没有动态多态的需求,就用CRTP实现了静态多态//头文件就略了template<class Derived>class ThreadBase{protected: std::unique_ptr&l

2021-05-01 23:36:50 2189

原创 WSL无法访问网络的解决办法

今天在用WSL的时候突然网络抽风,域名解析出了问题,apt update都用不了网上查了很多方法,什么vEthernet的IP啊,ifconfigip啊,ip route add default啥的,都不管用。最后还是看了一下/etc/resolv.conf的配置,里面的nameserver字段显然是不对的,另外上面的注释提示了说这个文件是由WSL自动生成的,如果不希望自动生成,则请在/etc/wsl.conf里面设置一下:我就按照配置文件的说法在/etc/wsl.conf中写下了这行,然后打开po

2021-04-09 10:40:25 29570 19

原创 VScode C++头文件问题的终极解决办法

VScode C++头文件问题的终极解决办法之前在配置VScode环境的时候,按照网上的文章配置,总是找不到头文件,搜索解决方案,都是千篇一律,没有说到重点。在此详细解释一下。局部配置全局配置傻傻分不清楚网上很多文章都在讲一个配置文件c_cpp_properties.json,但是有些人不知道什么原因是找不到这个配置文件的。在扩展面板中,点击C++的设置进入的页面其实是通用设置页面,大概长这样:这里只能看到"在settings.json中编辑"的选项,无论怎么写,都不可能生效,因为真正的配置文件在

2021-03-19 11:02:41 30210 13

gcc-11.2源码release及依赖

gcc-11.2, gmp, mpc, mpfr, isl等

2021-08-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除