cmake之find_package
基本调用模式
CMake的find_package指令用于查找并载入一个外部包的设置.详细了解请点击
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
[REQUIRED] [[COMPONENTS] [components...]]
[OPTIONAL_COMPONENTS components...]
[NO_POLICY_SCOPE])
自定义module包
自定义config包
我们可以自定义一个module给别人使用,步骤如下:
生成静态库和动态库(同时)
install库相关文件
in...
SDL2之播放音频
SDL2音频子系统相关API介绍
实验环境
QT 5.14.2(mingw730_64)
SDL2.0.16
音频相关结构体
// 音频格式
typedef Uint16 SDL_AudioFormat;
// audio flags
#define SDL_AUDIO_MASK_BITSIZE (0xFF)
#define SDL_AUDIO_MASK_DATATYPE (1<<8)
#define SDL_AUDIO_MASK_ENDIAN (1<<12)
#define SDL_AUDIO_MASK_SIGNED (1<<15)
#define SDL_AUDIO_BIT...
GDB常用命令
1. 概述
转自链接
GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。一般来说,GDB主要帮助我们完成以下四个方面的功能:
启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
在某个指定的地方或条件下暂停程序。
当程序被停住时,可以检查此时你的程序中所发生的事。
在程序执行过程中修改程序中的变量或条件,将一个b...
C++的boost库的下载编译
概述
来自维基百科
Boost C++ 库(Libraries)是一组扩展C++功能的经过同行评审(Peer-reviewed)且开放源码程序库。大多数的函数为了能够以开放源码或者封闭项目的方式运作,而许可于Boost软件许可协议(Boost Software License)之下。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。
为了要确保库的效率与弹性,Boost广泛的使用模板(template)功能。而它是针对各式领域的C++用户与应用领域(Application Domain)上,包含的库类别从像smart_ptr库这种类通用库,到像是文件系统的操作系统抽象层,甚至能够利用Boost来开发额外的库或是给高级的C++用户利用,像...
C++的asio库的下载编译
概述
Asio是一个跨平台的C++库,用于网络和低级I / O编程 为开发人员提供一致的异步模型,使用现代 C++方法。
当针对C ++ 11(或更高版本)时,大多数asio都可以在没有任何额外依赖项的情况下使用。独立版的asio是header-only,所以使用时只需包含头文件即可。把解压得到的include目录(包含asio.hpp)放到项目目录里。
相关链接
Asio官网
独立版使用说明
boost版使用说明
下载
下载地址1
我这里选择的是1_24_0版本,下载之后解压。
编译
编译环境
Windows
gcc version 7.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 projec...
C++的关键字
C++关键字
类关键字
class
声明类
声明有作用域枚举类型(C++11 起)
在模板声明中,class 可用于引入类型模板形参与模板模板形参
若作用域中存在具有与某个类类型的名字相同的名字的函数或变量,则 class 可附于类名之前以消歧义,这产生一个详述类型说明符
struct
复合类型的声明
有作用域枚举类型的声明(C++11 起)
若存在于作用域中的某个函数或变量所拥有的名字,与某个非联合体类类型的名字相同,则可在其名字之前加上 struct 来消歧义,这产生一个详述类型说明符
union
联合体类型的声明
若存在于作用域中的某个函数或变量所拥有的名字与某个联合体类型的名字相同,则可在该名字之前加上 union 以...
C++中的lambda表达式
lambda表达式
lambda介绍
到目前为止,我们使用过的两种可调用对象有 函数 和 函数指针, 还有其它两种可调用对象:重载了调用运算符的类, 还有lambda表达式
一个lambda表达式表示一个可调用的代码单元。可理解为一个未命名的内联函数。与函数类似,一个lambda具有一个返回类型、一个参数列表和一个函数体。lambda与函数不同的地方在于,lambda可以定义在函数内部。
形式:
[capture list] (parameter list) -> return type { function body}
其中,capture list(捕获列表)是lambda表达式所在函数定义的局部变量列表(通常为空)
return type 、parameter l...
C++11新特性之智能指针
动态内存与智能指针
动态内存
在C++中,动态内存的管理是通过一对运算符来完成的:
new, 在动态内存中为对象分配空间并返回一个指向该对象的指针,也可以选择对对象进行初始化
delete, 接受一个动态对象的指针,销毁该对象,并释放与之关联的内存
智能指针
为了更容易,也更安全的使用动态内存,新的标准库提供了两种智能指针类型来管理动态对象。智能指针的行为类似于常规指针,区别在于它负责自动释放所指向的对象。
含义
shared_ptr 允许多个指针指向同一个对象
unique_ptr 只能”独占”所指向的对象
初始化
智能指针也是一个模板。所以,创建智能指针时,必须提供指针类型,与vector一样,在尖括号内给出类型。
shared...
共计 73 篇文章,10 页。