07 protobuf插件
protobuf插件 在使用protobuf这个序列化库的时候,我们通常需要手动调用protoc.exe这个可执行程序对我们定义的.proto文件进行编译,从而生成对应的.cc和.h文件,但是这有点麻烦,所以CMake提供了一个API便于我们编译.proto文件 1.编译原生proto文件123456789101112find_package(Protobuf REQUIRED)include_directories(${Protobuf_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})set(PROTO_FILE helloworld.proto) protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILE} LANGUAGE cpp)add_executable(greeter_server greeter_server.cpp...
ADC
HAL库ADC1.硬件问题STM32的ADC、DAC的供电电源是VDDA,直接把他连到VDD上就行了,千万别加电阻。 ADC的测量范围是:0~VDDA,如果加了电阻,则VDDA会小于3.3V,那么ADC的量程也将缩小。 2.软件问题ADC和串口一样,每次读取前都得开启一次,不然就只能读一次 12345678910111213uint16_t get_adc(void){ //开启ADC1 HAL_ADC_Start(&hadc1); //等待ADC转换完成,超时为100ms HAL_ADC_PollForConversion(&hadc1,100); //判断ADC是否转换成功 if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)) { return HAL_ADC_GetValue(&hadc1); } return...
03 tar工具
tar工具 tar是Ubuntu中的一个可执行文件,可以用来打包文件和目录,并生成.tar格式的文件,并且可以对打包后的文件进行压缩,生成.tar.gz等格式的文件 常见参数 参数 功能 -c 创建tar包 -x 解压tar包 -v 详细展示处理文件名 -f 指定输出文件名 -z 使用gzip压缩,.tar.gz 是常见的压缩文件扩展名 -j 使用bzip2压缩,.tar.bz2 是使用 bzip2 压缩的文件扩展名 -t 查看 tar 包中的文件列表 常见参数组合 -cvf:创建tar包 -xvf:在当前目录解压tar包 -xzvf:在当前目录使用gzip工具解压tar包
10 智能指针
...
02 函数式编程
函数式编程 函数式编程的主要思想其实就是“回调函数”,即把一个函数A当成参数传给另一个函数B,这样B的就可以根据传入形参的不同,而能够做更多的事情 实现回调函数主要可以通过以下几种方式传入可调对象作为形参: 函数指针 lambda表达式 std::function 函数对象(重载了()运算符的类) 函数指针1.定义:函数指针是指向一个函数入口地址的指针。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数 2.语法: <返回值类型> (*<函数指针名>)(<形参列表>) ,如果形参列表为void,则说明没有参数。 (*<函数指针名>)是一个整体,括号不能省 1234//如:int (*fun)(int,int);int (*p)(); //函数指针的另一种定义方式,不过不建议使用int (*p)(int a, int b); ...
04 构造函数
构造函数分类 C++中有一下几类构造函数 以一下这个类为例: 1234class Person{ int age; std::string name;}; 1.默认构造函数没有参数,用于创建一个具有默认值的Person对象。 1Person()=default; 2.参数化构造函数1Person(int a, std::string n) : age(a), name(n) {} 3.拷贝构造函数使用另一个对象来初始化当前对象。 1Person(const Person& other) : age(other.age), name(other.name)...
03 命名空间
命名空间1.C++的作用域C++中有四种作用域,在不同的作用域中可以定义名字相同的变量,互不干扰。 命名空间作用域:就是程序员利用名字空间定义在C++程序中划分出来的一块比较大的程序区段。在该程序区段内部,可以定义变量、函数、类、typedef、#define 等,最后由{...
12 文件IO及路径
...







