c/c++
文章平均质量分 56
一切归于平静
这个作者很懒,什么都没留下…
展开
-
visual studio code 1.61.2 c++ debug环境配置
1、tasks.json配置{ "version": "2.0.0", "options": { "cwd": "${workspaceFolder}/build/" }, "tasks": [ { "label": "cmake", "type": "shell", "command": "cmake", "args": [ ...原创 2021-12-14 19:23:34 · 920 阅读 · 0 评论 -
cmake编译注意点
1、链接静态库和动态库target_link_libraries(可执行文件, -Wl,--start-group, ${CMAKE_CURRENT_SOURCE_DIR}/libs/libzlog/libzlog.a, -Wl,--end-group)链接库链接:-Wl,--start-group与Wl,--end-group是一组group,表示组内的静态库不存在先后顺序。2、设置编译flagif (UNIX AND NOT APPLE) set(CMAKE_CXX_FLA...原创 2021-09-28 18:52:19 · 992 阅读 · 0 评论 -
g++编译命令行参数源文件和库文件位置不能互换
当前目录下有librestyhash.a 和 main.cpp,那我编译时必须g++ -Wall -g -o main.cpp librestyhash.a,为什么main.cpp和librestyhash.a不能交换?原创 2021-06-10 15:46:40 · 191 阅读 · 0 评论 -
state thread协程库解析
一、数据结构文件common.h解析1、_st_clist循环队列//循环队列定义typedef struct _st_clist { struct _st_clist *next; struct _st_clist *prev;} _st_clist_t;包含该队列的对象,后续都可以根据该队列在对象中的偏移位置来计算对象的地址。2、_st_stack栈typedef struct _st_stack { _st_clist_t links; char *vad原创 2021-03-24 19:58:53 · 367 阅读 · 0 评论 -
shared_ptr循环引用
循环引用:两个对象相互使用shared_ptr成员变量指向对方造成循环引用,导致引用计数失效。即A内部有指向B,B内部有指向A,这样对于A,B必定是在A析构后B才析构,对于B,A必定是B析构后才析构A,这就是循环引用的问题,违反常规,导致内存泄露。示例代码:#include ciostream>#include<nemory>using namespace std;class BB;class AA{ public: shared_ptr<B原创 2021-03-15 16:14:07 · 4359 阅读 · 0 评论 -
Makefile常用函数说明
Makefile 常用关键字:1、.PHONY:Makefile文件:.PHONE: cleanclean: rm *.o当Makefile文件所在目录存在clean文件,而.PHONE:clean又没添加,则执行make clean是无效的,所以".PHONY:clean"就是保证即使目录下有文件名为clean的文件,也能正常执行make clean。2、all:的作用$(TARGET):libADT.a $(CC) S(cFLAGS) S(LDF...原创 2021-03-02 17:44:00 · 351 阅读 · 0 评论 -
Makefile中的$@, $^, $< , $?, $%, $+, $*
转自:https://blog.csdn.net/dlf1769/article/details/78997967$@表示目标文件$^表示所有的依赖文件$<表示第一个依赖文件$?表示比目标还要新的依赖文件列表$% 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是“foo.a(bar.o)”,那么,“$%”就是“bar.o”,“$@”就是“foo.a”。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。...转载 2021-03-02 17:42:47 · 1690 阅读 · 0 评论 -
Linux下5种动态库运行时搜索路径的方法
转自:https://blog.csdn.net/onlyou930/article/details/6565906众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来转载 2021-03-02 14:41:48 · 1241 阅读 · 0 评论 -
C++类型转换
转自:https://www.jianshu.com/p/e6a1ed13f14fC++类型转换C++为了规范C中的类型转换,加强类型转换的可视性,引入了四种强制类型转换操作符:static_cast, reinterpret_cast, const_cast, dynamic_cast他们本质上都是模板类。下面分别来介绍:1.static_cast它用于非多态类型的转换(静态转换),对应于C中的隐式类型转换,但他不能用于两个不相关类型的转换,如整形和整形指针之间的转换,虽然..转载 2021-01-26 15:54:57 · 58 阅读 · 0 评论 -
c++11之第8章
1、对齐支持,在我们平台的定义上,c/c++的int类型要求对齐到4字节。2、因为对齐而造成的内存留空称为填充数据。3、对齐方式默认是一个整数,表示的是一个类型的对象存放的内存地址应满足的条件。简称对齐值。...原创 2020-08-18 21:52:06 · 85 阅读 · 0 评论 -
skynet源码阅读--协程调度模型
转载:https://blog.csdn.net/weixin_33730836/article/details/93725644注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入。 作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和skynet.dispatch的,前者在skynet-os中做一些初始...转载 2020-04-08 17:16:52 · 344 阅读 · 0 评论 -
WSAAccept()函数使用解析
转自:https://blog.csdn.net/weixin_30624825/article/details/98693597首先了解accept、AcceptEx、WSAAccept的区别.1.accept、WSAAccept是同步操作,AcceptEx是异步操作2.WSAAccept函数在accept函数基础上添加了条件函数判断是否接受客户端连接3.AcceptEx...转载 2020-03-09 16:56:51 · 497 阅读 · 0 评论 -
CentOS上升级gcc编译器使支持C++11
转自:https://www.cnblogs.com/zhaoosheLBJ/p/10168209.html0.目标最近在学习c++11,我本机装的CentOS编译器较老,不支持C++11的新特性,所以我需要把gcc从4.4.7升级到4.8.1。1. 需要下载gcc的源码wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8...转载 2020-03-01 17:15:48 · 733 阅读 · 0 评论 -
比较windows下的5种IO模型
转载:https://www.cnblogs.com/curo0119/p/8469794.html看到一个很有意思的解释: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解SocketI/O模型。select模型: 老陈非常想看到女儿的信。以至于他每隔10分钟就...转载 2019-12-29 21:46:36 · 134 阅读 · 0 评论 -
Visual studio 与字符编码浅析
转自:https://blog.csdn.net/liangbch/article/details/79608635关于字符编码1. 西方文字的编码。1.1 ASCII 码,ASCII是通用的英文字符的编码,对于英文字符,他采用7位2进制数来表示一个英文字符,我们知道1个byte包含8个bit,对于ASCII码来说,最高bit为0.1.2 ISO 8859,西方广泛使用的编码标准。用...转载 2019-11-14 19:41:14 · 406 阅读 · 0 评论 -
Visual Studio——多字节编码与Unicode码
转自:https://blog.csdn.net/a8039974/article/details/76474801多字节字符与宽字节字符1) char与wchar_t我们知道C++基本数据类型中表示字符的有两种:char、wchar_t。char叫多字节字符,一个char占一个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。一个英文字符(如’s’)用一...转载 2019-11-14 19:40:19 · 501 阅读 · 0 评论 -
Windows上MBCS和UTF-8之间的区别
转:https://codeday.me/bug/20170816/56805.html我在阅读Windows上的字符集和编码。我注意到有两个编译器标志在Visual Studio编译器(对于C)称为MBCS和UNICODE。它们之间有什么区别?我没有得到的是如何UTF-8在概念上不同于MBCS编码?另外,我在MSDN中发现了以下引用:Unicode is a 16-bit ...转载 2019-11-14 19:39:15 · 662 阅读 · 0 评论 -
c++通过smtp发送邮件总结
转:http://www.voidcn.com/article/p-yillxhvg-nr.html1.发送人需要通过用户名、密码登陆到smtp服务器,如smtp.163.com如用户名为abc2.得到身份验证后,需要设置信封信息(邮件的三个部分为:信封、首部和正文)(1)信封通过mail from,recp to命令来设置:如mail from:<zbird1@163....转载 2019-06-11 20:13:30 · 5346 阅读 · 0 评论 -
linux下安装protobuf及其使用
linux下安装protobuf及在python与php上的应用转:https://segmentfault.com/a/1190000017144329?utm_source=tag-newest下载解压源文件github上的版本发布地址https://github.com/protocolbuffers/protobuf/releases下载&解压&进入...原创 2019-05-22 20:02:36 · 974 阅读 · 0 评论 -
C程序调用shell脚本共有三种方式
转:https://blog.csdn.net/luokehua789789/article/details/531179041)system(shell命令或shell脚本路径); 执行过程:system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用syst...转载 2019-05-05 10:01:31 · 530 阅读 · 0 评论 -
线程的查看以及利用gdb调试多线程
转自:https://blog.csdn.net/zhangye3017/article/details/80382496转载 2019-04-28 11:04:44 · 421 阅读 · 0 评论 -
函数调用栈
1、c语言堆的内存分配方向是从低地址到高地址,栈中变量是从高地址到地址,数组地址是从低地址到高地址分配的,数组是作为一个整体存在与栈中。2、堆从低到高分配,栈从高到低分配,是一种惯例,在以前单进程操作系统中,这样做可以最大化共享内存,不用事先给栈指定一个最大深度。3、c语言是支持可变参数的,正是这个原因使得C语言函数参数入栈顺序为从右至左。具体原因为:C方式参数入栈顺序(从右至...原创 2019-03-27 19:30:35 · 102 阅读 · 0 评论