c++
文章平均质量分 54
didaida00
这个作者很懒,什么都没留下…
展开
-
各平台进程/线程通信方式
Linux进程间的通信方式:管道、有名管道、信号量、消息队列、共享内存、信号、socketLinxu线程间的通信方式:互斥量、条件变量、信号量、信号Windows进程间的通信方式:管道、信号量、消息队列、共享内存、socketWindows线程间的通信方式:互斥量、信号量、事件、临界区...原创 2020-06-18 01:33:23 · 164 阅读 · 0 评论 -
如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt)
g++ 4.8.2cmake 2.8之前写cmkae编译带有c++11特性的代码有这么一句:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")但是总会出现cc1plus: error: unrecognized command line option "-std=c++11" 报错。所以set(QMAKE_CXXFLAGS "-s...转载 2018-11-02 15:07:56 · 6906 阅读 · 0 评论 -
cmake3.3安装
没有gcc和g++的先执行这一步~ yum install gcc ~ yum install gcc-c++继续执行:下载cmake ,install~ cd /tmp ~ wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz ~ tar xzvf cmake-3.3.2.tar.gz ~ cd cmake-3.3.2 ~...原创 2018-11-02 15:03:59 · 2404 阅读 · 0 评论 -
condition_variable
#include <iostream>#include<thread>#include<mutex>#include<condition_variable>#include<unistd.h>std::mutex mtx;//全局互斥锁std::condition_variable cv;//全局条件变量bool read...原创 2018-07-12 11:38:49 · 172 阅读 · 0 评论 -
运行时库路径指定
这里补充一点,动态库(.so)是直接可以调用的,并不会被编译进程序。只读文件系统,将其中一个目录通过nfs方式mount到其它地方(比如PC机),将动态库放于该目录下,并将该目录指定为库的搜索路径(export LD_LIBRARY_PATH=),程序运行时会调用该目录下的库,而不是去调用存放在只读文件系统中的原有的库(已亲自实测),这样在调试某一个动态库时只需要编译替换该库即可,大大缩减了调试开...转载 2018-05-24 17:45:06 · 2659 阅读 · 0 评论 -
g++,make ,cmake的一些区别
大家都知道,写程序大体步骤为:1.用编辑器编写源代码,如.c文件。2.用编译器编译代码生成目标文件,如.o。3.用链接器连接目标代码生成可执行文件,如.exe。但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来...转载 2018-05-25 14:46:06 · 884 阅读 · 0 评论 -
【c++11】并发指南之mutex类与lock类
1 mutex类:1.1 std::mutex,基本锁1.2 std::recursive_mutex,递归锁 std::recursive_mutex 与 std::mutex 一样,也是一种可以被上锁的对象,但是和 std::mutex 不同的是,std::recursive_mutex 允许同一个线程对互斥量多次上锁(即递归上锁),来获得对互斥量对象的多层所有权,std::recursiv...原创 2018-04-29 11:45:51 · 892 阅读 · 0 评论 -
【c++11】总结auto和decltype
1.auto 表达式类型推断auto i=0,*p=&ii该例中i为int,p为int型指针,auto可以一条语句声明多个变量,但是所有变量初始类型都需一样。auto i=0,j=3.14;//错误,两个变量类型不一样auto会忽略顶层const,只保留底层const,之前一篇博文也提到了,ps:constexpr则只对指针有效,顶层。const int ci=i;auto b=ci;此...原创 2018-04-24 22:07:33 · 317 阅读 · 0 评论 -
【c++】各种多态机制的一些总结
1.对类层次中的同名成员函数来说有三种关系:overload,override,hide重载overload:同一类定义的成员函数才有的关系,返回类型,形参类型或个数不同,但是不能只返回值不同。属于静态多态。重写override:通过虚函数实现,子类覆盖基类的虚函数。隐藏hide:不通过虚函数实现,子类屏蔽基类中的同名函数。2.虚类,纯虚类,抽象类和虚基类虚类:含有虚函数的类都叫虚类。纯虚类:所有...原创 2018-05-02 11:57:36 · 213 阅读 · 0 评论 -
【c++11】const与constexpr
const大家都知道,当我们希望定义一种变量,它的值不能被改变时使用。一 初始化时注意几点1.定义时必须初始化const int i = 42;//correctconst int k;//wrong,const should be initialized2.可以用非常量初始化int i = 42;const int j = i;//正确,拷贝完成后j的值与i没什么关系了3.默认情况下仅在文...原创 2018-04-23 14:30:41 · 1105 阅读 · 0 评论 -
模板函数的声明和定义为何不能分开放在两个文件中?
首先明确:对普通函数来说,声明放在头文件中,定义放在源文件中,其它的地方要使用该函数时,仅需要包含头文件即可,因为编译器编译时是以一个源文件作为单元编译的,当它遇到不在本文件中定义的函数时,若能够找到其声明,则会将此符号放在本编译单元的外部符号表中,链接的时候自然就可以找到该符号的定义了。而对模板函数来说,首先明确,模板函数是在编译器遇到使用模板的代码时才将模板函数实例转载 2017-12-08 16:07:16 · 3923 阅读 · 0 评论 -
c++回调机制全解:定义原型,注册,回调,封装.
模块A调用模块B,但在B中,需要反过来调用到A的函数a(),则a()称为回调函数,在B中需要做的事:1.约定回调函数原型.2.定义注册回调函数在A中需要:1.定义回调函数2.调用B的注册回调函数使用回调函数的几个步骤:1.在B中,约定借口规范,定义回调函数a()的原型这里回调函数原型的定义最好遵循typedef void (*SCT_XXX)(LPVOID lp, const CBParamStr...原创 2017-08-25 11:12:40 · 2902 阅读 · 1 评论 -
网络中超时接收的函数之一 select
int ReadTimeOut(int nSocket, unsigned int nWaitSeconds) {//默认为0,当wait_seconds==0时,不检测直接返回0int nRet = 0;//需要检测超时if (nWaitSeconds > 0) {fd_set stReadSocketSet; //读套接字结构体struct timeval stTim原创 2017-08-09 11:06:36 · 463 阅读 · 0 评论