随笔分类 -  1_ C++

摘要:回收子线程的资源有两种方法——join和detach: join的意思是父线程等待子线程结束,在子线程结束时,负责回收子线程的资源。 detach的含义是父线程和子线程相互分离,即使父线程结束了,只要主线程没有结束,子线程就会继续正常运行。在子线程结束时,负责回收子线程的资源。 joinable() 阅读全文
posted @ 2022-07-27 21:21 好人~ 阅读(1690) 评论(0) 推荐(0)
摘要:C++ 正则表达式——string替换 time_t curr_time; time(&curr_time); char *curr_time2 = asctime(localtime(&curr_time)); regex pattern1(" "); // 规则一:匹配空格 regex patt 阅读全文
posted @ 2022-07-25 10:21 好人~ 阅读(191) 评论(0) 推荐(0)
摘要:宏的概念 宏的概念:使用宏的位置,在预处理阶段只是进行了“字符替换”,被“字符”替换的宏就成为了代码的一部分,看下面这个代码你就明白了“被“字符”替换的宏就成为了代码的一部分”是什么意思: // test.cpp #include <iostream> #define TEST_INT_8 int 阅读全文
posted @ 2022-07-24 20:06 好人~ 阅读(471) 评论(0) 推荐(0)
摘要:使用fopen打开文件时,如果文件不存在,就不需要执行fclose,否则会产生段错误,如下: // test.cpp #include <stdio.h> int main() { FILE *outfp_ = NULL; outfp_ = fopen("output.h264", "rb"); i 阅读全文
posted @ 2022-07-24 13:59 好人~ 阅读(1248) 评论(0) 推荐(0)
摘要:本博客只是对链接进行补充说明。 通过git clone https://github.com/pybind/pybind11.git 下载源码,可以发现源码中并没有cpp文件,只有.h文件,也就是说pybind11将实现的代码都放进了.h文件中了。所以pybind11其实是不用进行编译安装,就可以使 阅读全文
posted @ 2022-07-23 19:28 好人~ 阅读(1021) 评论(0) 推荐(0)
摘要:方法:我认为与IDE相比,GDB没什么好处,如果能用IDE就尽量用IDE。 # 1.gdb常用命令 可参考:[gdb调试](https://freecplus.net/b72113dda88a43b48728e0552fd8a74c.html) bt:查看函数的调用栈。比如main函数中调用func 阅读全文
posted @ 2022-06-29 19:14 好人~ 阅读(927) 评论(0) 推荐(0)
摘要:1.静态库和动态库、动态库的显式调用和隐式调用 **静态库:**静态链接库在链接时,编译器会将目标文件和静态库文件组织成一个可执行文件,程序运行时,将全部数据加载到内存。 如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,最直接的一个例子就是双击打开一个软件,要很久才能看到界面。这是 阅读全文
posted @ 2022-06-26 22:13 好人~ 阅读(1740) 评论(0) 推荐(0)
摘要:# 1.简介 公用函数库的程序文件(.c文件)是源代码,对任何程序员是可见的,没有安全性可言,但是,在实际开发中,出于技术保密或其它方面考虑,开发者并不希望提供公用函数库的源代码。 C/C++提供了一个可以保证代码安全性的方法,把公共的程序文件编译成库文件,库文件是一种可执行代码的二进制形式,可以与 阅读全文
posted @ 2022-06-25 21:03 好人~ 阅读(895) 评论(0) 推荐(0)
摘要:1.Python调用C++程序 1、编写C/C++实现程序。 2、将C/C++程序编译成动态库。 3、在Python中调用编译生成的库。 请参考:简单的Python调用C++程序(使用ctypes模块) python调用C++程序的其他方法: boost.python:将c/c++的函数接口转换为P 阅读全文
posted @ 2022-06-13 20:20 好人~ 阅读(1493) 评论(0) 推荐(0)
摘要:jsoncpp源码位置:https://github.com/open-source-parsers/jsoncpp 1.jsoncpp简介 jsoncpp是一个用来存储键值对的库。 键值对的值可以是双引号包起来的字符串、数、布尔类型、null、对象或者数组 上面所说的大家都很熟悉,只有最后两个是比 阅读全文
posted @ 2022-06-06 22:44 好人~ 阅读(2462) 评论(0) 推荐(0)
摘要:# 0.C\C++动态库(共享库)编译和运行时的链接简介 库文件在编译(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,在使用之前肯定需要在一些搜索路径下查找库文件,看库文件是否存在,搜索路径是在系统中进行设置的。一般Linux系统把/lib和/usr/lib这两个目录作为默认的库搜索路径 阅读全文
posted @ 2022-05-28 16:26 好人~ 阅读(2596) 评论(0) 推荐(1)
摘要:1.Makefile 1.1.Makefile简介 makefile用于编译整个项目. 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 ma 阅读全文
posted @ 2022-05-12 14:06 好人~ 阅读(813) 评论(0) 推荐(1)
摘要:fcntl与close-on-exec fcntl系统调用是控制文件描述符属性的通用POSIX(POSIX是一种通用的规范)方法。 //头文件: #include <unistd.h> #include <fcntl.h> //定义函数: int fcntl(int fd, int cmd); in 阅读全文
posted @ 2022-05-07 22:10 好人~ 阅读(88) 评论(0) 推荐(0)
摘要:本文对友元、虚基类、多态和虚函数四个看起来高大上的概念进行介绍。 1.友元 友元:让其他函数(类外函数或者其他类的成员函数)可以访问对象的private和protect类型成员 1.1.友元函数 友元函数:在类内定义或声明的一个函数为友元,友元函数中创建的对象可以访问private和protect类 阅读全文
posted @ 2022-05-07 16:59 好人~ 阅读(218) 评论(0) 推荐(0)
摘要:#1.简介 拷贝构造函数(一种特殊的构造函数):用一个对象初始化一个新建立的对象。默认拷贝构造函数的功能是把传入的对象的每个数据成员的值依次复制到新建立的对象中。 拷贝构造函数在三种情况下被调用:1)用于用一个对象初始化另一个对象 2)对象作为实参传递给形参 3)作为函数的返回值。举例如下: #in 阅读全文
posted @ 2022-05-07 16:59 好人~ 阅读(251) 评论(0) 推荐(0)
摘要:操作符重载:定义用操作符来操作对象时所产生的效果,如定义用加号来操作对象时所产生的效果(加法的重载): #include <iostream> using namespace std; class complex { public: complex(double a, double b); comp 阅读全文
posted @ 2022-05-07 16:58 好人~ 阅读(54) 评论(0) 推荐(0)
摘要:1.1.函数与inline 将函数替换成函数中具体的表达式,从而防止使用太多的函数而导致栈溢出。【栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间】 #include <stdio.h> inline const char *num_check(int v) { return (v % 阅读全文
posted @ 2022-05-07 16:57 好人~ 阅读(146) 评论(0) 推荐(0)
摘要:# 1.模板 模版分为:类模版、函数模版、成员函数模板。 1.1.类模板 用一个实例进行说明: template<typename T> // 类模板, class complex{ private: T re, im; // 模板 friend complex& __doap1 (complex 阅读全文
posted @ 2022-05-07 16:57 好人~ 阅读(373) 评论(0) 推荐(0)
摘要:请先看这个,然后再看本文 0.简介 容器的概念:容器就是类模板,此类模板是用来生成不同数据类型下的数据结构,如生成int型栈、char型栈等。容器是个类肯定包含对数据结构的操作,如进栈、出栈、获取栈中元素个数等。 容器一般都在命名空间std中,所以在#include<容器名>后, 一般还需要写usi 阅读全文
posted @ 2022-05-07 16:53 好人~ 阅读(170) 评论(0) 推荐(0)