C++
陈昊-1
路漫漫,行则将至;
展开
-
gcc和g++的区别
一:gcc与g++比较编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern"C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:转载 2017-07-12 11:48:18 · 458 阅读 · 0 评论 -
boost signals2库的使用
signals2基于Boost的另一个库signals,实现了线程安全的观察者模式。在signals2库中,观察者模式被称为信号/插槽(signals and slots),他是一种函数回调机制,一个信号关联了多个插槽,当信号发出时,所有关联它的插槽都会被调用。许多成熟的软件系统都用到了这种信号/插槽机制(另一个常用的名称是事件处理机制:event/event handler),它可以很好地解耦一...转载 2018-05-05 14:31:37 · 486 阅读 · 0 评论 -
protobuf使用
1.下载protobuf下载地址:http://code.google.com/p/protobuf/downloads/list2.编译protobuf解压下载的zip包,cd到protobuf的目录下,执行以下指令:./configuremakemake checkmake install3.检查安装是否成功protoc --version原创 2018-04-30 21:46:08 · 289 阅读 · 0 评论 -
动态存储区、静态存储区、堆和栈的区别
C/c++程序经过编译连接后形成的二进制映像文件,这文件包含:栈,堆,数据段(只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成. 1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数转载 2018-01-10 14:58:55 · 575 阅读 · 1 评论 -
typedef和typedef typename的区别
1、 typedef:是用于定义类型用的 (1)为了简化,清晰。比如,vector*> temp(10);可以简化为 typedef list listnum; typedef vector vectornum; vectornum temp(10);(2)定义指向成员的指针。class A{ virtual sup() = 0;}typedef转载 2018-01-31 09:11:19 · 2083 阅读 · 0 评论 -
new的三种形式(二十)
一原创 2017-10-10 20:37:05 · 904 阅读 · 0 评论 -
动态内存开辟--new_delete和malloc_free(十八)
一、内存开辟 在C++编程中有两种内存开辟方式: 一种是静态内存开辟空间,这类是在栈中开辟,由编译器在编译程序时就能够确定空间大小,如定义char a; int b;因为a先定义,b后定义,在栈中a的地址要小,b的地址要大; 第二种是动态开辟,是在程序运行时需要动态定义空间的大小,通过malloc或new来进行开辟,这部分空间是在堆上进行原创 2017-09-23 17:45:57 · 328 阅读 · 0 评论 -
类模板(十七)
一、类模板简介 对于一个类中的参数类型变化的情况,需要定义类模板,比如通过类模板定义不同的数据结构,也被称为容器,即STL。对于类模板定义需要注意三个方面:一是在类前添加template以声明该类为一个类模板;二是在类模板中定义的函数都是模板函数,如果是在类内部进行定义可以直接定义,如果在类外定义需要以模板函数的形式进行定义,如template List::push_back(Typ原创 2017-09-21 10:22:33 · 268 阅读 · 0 评论 -
函数模板(十六)
一、简介 正常的C++编程无法应对参数类型变化的问题,于是引入了模板,通过模板将类型作为一个参数进行传递,通常可以通过类型的推演自动传递,如Max(1,2)可以推导出两个类型都为int,并将这个类型传递给函数,也可以通过直接定义进行传递,如Max(1,2),这种就是明确的将类型作为参数传递。函数模板的执行时会根据传递的类型生成一些新的函数,称为模板函数,而这部分内容是编译器在后台完原创 2017-09-21 08:43:49 · 333 阅读 · 0 评论 -
static成员与const方法(十五)
1、static修饰类的成员包括成员数据和成员函数 static修饰成员数据,则该成员数据属于类而不属于某个对象,所以具有一下性质: (1)初始化时不能在构造函数中初始化,只能在类外部以Test::data=0的形式初始化,因为它不属于对象,而构造函数是创建对象才会调用的函数; (2)静态成员数据属于类,所以成员函数可原创 2017-09-18 08:35:23 · 401 阅读 · 0 评论 -
C调用C++函数
#ifdef _cplusplusextern "C"{#endifint myfunc();#ifdef __cplusplus}#endif在 cpp文件中:需要:extern "C" int myfunc(){}接下来,将cpp文件编译成.o文件,如:g++ -c detect.cpp detect.原创 2017-09-08 20:46:30 · 234 阅读 · 0 评论 -
C++调用python脚本
#include "Python.h"#include using namespace std;int main(){ Py_Initialize(); PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')"); PyObjec原创 2017-08-21 09:50:12 · 494 阅读 · 0 评论 -
cmake 添加python.h相关库
cmake_minimum_required(VERSION 2.6)project(c_to_python)find_package(PythonLibs REQUIRED)#include_directories("/usr/include/python2.7")#target_link_libraries("/usr/lib/python2.7/config-x86_64-l原创 2017-08-19 15:29:17 · 7857 阅读 · 1 评论 -
ubuntu中C++编译及调试方法
1、C++中使用gcc或g++来编译链接C++程序,实际上gcc和g++都可以编译C++程序,但是gcc不支持C++程序的链接,所以推荐使用g++实现C++程序的编译链接。2、通过g++编译链接C++程序比较简单,只要通过命令g++ main.cpp即可实现,此时编译生成a.out文件,通过./a.out可以执行该程序。如果希望编译出的可执行文件是指定名称,可以使用-a参数,即g++ main原创 2017-07-12 14:53:31 · 8475 阅读 · 0 评论 -
vs2010外部全局变量在其它文件使用
1、在cpp文件中定义变量RD_OS_Static_ACCType RD_OS_static_obj; //static object2、在头文件中添加外部引用声明extern RD_OS_Static_ACCType RD_OS_static_obj; //static object3、在其它文件中添加该头文件#include "RD_ObjS...原创 2018-08-03 11:09:26 · 1716 阅读 · 0 评论