C++
文章平均质量分 59
Colin-YYYY
这个作者很懒,什么都没留下…
展开
-
C++ API设计之风格
当然,也可以使用内部链接隐藏实现中的符号名,比如将符号名声明为静态的,这样它们的作用域就限制在.c文件之中了。通过这种方式,可以确保任何这样的函数都不会被导出到外部,从而不会导致符号冲突。相对于运行时开销而言,代码体积是需要优先考虑的因素,那么应该选择面向对象方案,而非模板。模板的一个重要属性是,不同于使用继承时的动态(运行时)多态,它支持静态(编译时)多态。数据驱动型程序指的是:通过每次运行时提供不同的输入数据,它可以执行不同的操作。模板进一步的益处,对于特定类型的实例类,可以特化它的某些方法。原创 2022-08-25 17:11:29 · 636 阅读 · 0 评论 -
在x86虚拟机搭建arm64交叉编译环境记录
解决方案:https://elinux.org/Jetson/TX1_Sample_Root_Filesystem,按照文章中步骤操作,直至执行上述命令不报错。指定一个或多个目录作为所有其他搜索目录的前缀。该变量re-root了整个搜索过程到指定位置。默认的搜索顺序设计时考虑了最常用到最不常用的场景,实际工程中可以通过调用多次带有。选项的命令来修改搜索顺序。一旦搜索成功,则结果将被缓存下来。上述两个变量在交叉编译时,用于指定搜索根路径很有用。变量也可以用来指定一个目录作为搜索目录前缀。...原创 2022-08-16 16:32:45 · 2437 阅读 · 1 评论 -
在gdb中调试release的程序(c++)
在gdb中调试release的程序(c++)文章目录在gdb中调试release的程序(c++)方法一:从`debug`版中提取调试符号方法二:直接使用`debug`版作为符号源使用release编译的可执行文件不包含调试信息,没有调试符号文件,所以在gdb中使用l和bt命令都看不到相应的源代码信息方法一:从debug版中提取调试符号生成调试符号表:# pp_debug为编译好的debug版可执行程序objcopy --only-keep-debug pp_debug pp_debug.symb原创 2022-04-01 15:03:50 · 1791 阅读 · 0 评论 -
c++ 系统内存检查(Linux)
c++ 系统内存检查(Linux)文章目录c++ 系统内存检查(Linux)检查内存泄露检查堆溢出检查栈溢出检查全局内存溢出检查释放后继续使用检查内存泄露通过g++来检查内存泄露的问题# g++g++ -fsanitize=address -g -o testmen testmem.cpp# CMakeLists.txt 里面添加set(CMAKE_CXX_FLAGS "-fsanitize=address")使用-fsanitize=address开关以后,代码不用做任何改动,就自动具有原创 2022-04-01 11:32:56 · 3277 阅读 · 0 评论 -
c++ 调试动态库
c++ 调试动态库(Linux)文章目录c++ 调试动态库(Linux)`Linux`动态库命名规则动态库动态加载导出动态库动态加载动态库Linux动态库命名规则lib[动态库名字].so.主版本号.次版本号.发行版本号libtest.so.1.0.123gcc在链接时寻找的名称是不包含版本号的文件名gdb attach 时一般要用sudo权限执行动态库动态加载导出动态库// 动态库导出// test.cpp#include <stdio.h>#include <原创 2022-04-01 10:14:55 · 1411 阅读 · 0 评论 -
C++代码调试(gdb)
C++代码调试(gdb)文章目录C++代码调试(gdb)Linux系统gdb调试功能gdb常用功能调试执行启用/禁用断点查看断点删除断点程序运行使用gdb内嵌函数gdb模式使用gdb内嵌函数gdb模式Linux系统gdb调试功能gdb常用功能支持的功能描述断点管理设置断点、查看断点等调试执行逐语句、逐过程执行查看数据在调试状态下查看变量数据、内存数据等运行时修改变量值在调试状态下修改某个变量的值显示源代码查看源代码信息搜索源代码对源代码进原创 2022-03-31 10:46:29 · 2847 阅读 · 0 评论 -
将sdk利用cmake实现可find_package的做法
将sdk利用cmake实现可find_package的做法文章目录将`sdk`利用`cmake`实现可`find_package`的做法方法一(推荐):方法二:方法一(推荐):cmake_minimum_required(VERSION 3.15)# 拟导出的名字project(import_libraries)set(CMAKE_CXX_STANDARD 14)# 重要add_library(OpenNI2 INTERFACE)# 头文件目录(不一定是include)target_i原创 2022-03-17 16:37:16 · 377 阅读 · 0 评论 -
一些早期c++笔记
文章目录线程池demostd::bind使用上下文信号,锁函数的前后兼容定义接口,便于扩展线程池demo#include <iostream>#include <thread>#include <chrono>#include <boost/asio/io_service.hpp>int main(){ boost::asio::io_service io; boost::asio::io_service::work work原创 2022-03-06 22:18:21 · 384 阅读 · 0 评论 -
【早期笔记】C++代码调试(gdb)
C++代码调试(gdb)文章目录C++代码调试(gdb)Linux系统gdb调试功能gdb常用功能调试执行启用/禁用断点删除断点Linux系统gdb调试功能gdb常用功能支持的功能描述断点管理设置断点、查看断点等调试执行逐语句、逐过程执行查看数据在调试状态下查看变量数据、内存数据等运行时修改变量值在调试状态下修改某个变量的值显示源代码查看源代码信息搜索源代码对源代码进行查找调用堆栈管理查看堆栈信息线程管理调用多线程程序,查原创 2022-03-06 22:05:00 · 336 阅读 · 0 评论 -
C++ 书籍索引
C++ 书籍索引 《C++标准库(第2版)》 《提高C++性能的编程技术》 《More Effective C++: 35个改善编程与设计的有效方法》 《C++代码调试的艺术》 《从缺陷中学习C/C++》 《0 bug: C/C++商用工程之道》 《More Effective C++:40个新的工程难题、编程疑问及解决方法》 《C++ 编程兵书》 《C/C++算法从菜鸟到达人》 《C/C++实践进阶之道:写给程序眼看的编程书》 《Linux系统命令及Shell脚本实践指南》 《在原创 2022-03-06 22:03:22 · 622 阅读 · 0 评论 -
C++ API设计 笔记
C++ API设计 笔记什么是APIAPI提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式概括的说,API定义了一些复用的模块,使得各个模块化功能块可以嵌入到最终用户的应用程序中去API是一个明确定义的接口,可以为其他软件提供特定的服务契约 承包人C++ API 通常会包含如下的元素:头文件一组.h头文件。头文件定义了接口,使得客户端代码能够针对该接口进行编译。开源API还包括API实现的源代码类库一个或多个静态库或动态库文件,它们提供了API的具体实现原创 2022-03-06 22:01:47 · 1120 阅读 · 0 评论 -
交叉编译环境搭建
交叉编译环境搭建文章目录交叉编译环境搭建一、安装交叉编译工具链和`QEMU`二、下载最小文件系统解压根文件系统修改根文件系统进入根文件系统三、设置`toolchain.cmake`常见问题参考文档一、安装交叉编译工具链和QEMUsudo apt install gcc-5-aarch64-linux-gunsudo apt install g++-5-aarch64-linux-gunsudo apt install gdb-multiarchsudo apt install qemu-use原创 2022-02-16 17:44:09 · 2306 阅读 · 0 评论 -
boost::optional
boost::optional文章目录boost::optional创建对象方法使用:创建对象optional()optional(none)optional(v)optional(condition, v)emplace()方法value()如果未初始化,会抛异常bad_optional_accessvalue_or()value_or_eval()op1.value_or_eval({ return 1212; })使用:包含#include <b原创 2021-12-24 14:35:36 · 490 阅读 · 0 评论 -
boost::any
boost::anyany是一种很特殊的容器,它只能容纳一个元素,但这个元素可以是任意的类型如果用any保持原始指针会造成内存泄漏,替代方法是使用智能指针来存入any容器不是所有的智能指针都可以作为any存储的对象,如scoped_ptr,它不能被拷贝,不符合any的类型要求#include <boost>using namespace boost;any a(10);int n = any_cast<int>(a);// 获得值的引用,被用于左值any_原创 2021-12-24 11:06:14 · 663 阅读 · 0 评论