C/C++笔记
yuanzhenhai
这个作者很懒,什么都没留下…
展开
-
error C2589: 'unsigned' : illegal token on right side of '::'
Warning 4 warning C4251: 'AVDataPool::m_listDataBuffer' : class 'std::list<AVData *,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'AVDataPool' E...原创 2020-03-22 20:55:05 · 613 阅读 · 0 评论 -
关于union结构的理解方法
<br />union结构的大小是取 它里面的最大成员的 大小。<br /> <br /> union {<br /> int x;<br /> char y[3];<br /> struct x {<br /> int x;<br /> int y;<br />原创 2010-10-08 17:18:00 · 587 阅读 · 0 评论 -
写个链表删除,自己容易出错
<br /> if(note->ReturnNextNote()->ReturnServerMediaSession()->ReturnSession_ID() == pNote->ReturnServerMediaSession()->ReturnSession_ID()) { //cout<<"find the match note"<<endl; //temp1 = note->ReturnNextNote();原创 2010-12-05 16:59:00 · 508 阅读 · 0 评论 -
sizeof计算一个结构体大小
<br />#include <stdio.h> int main() { struct _AAA { char a; char e; double b; char c; int x; char f,g,h; short m,n; int d; }AAA; struct _BBB { double b; char a; char c; }BBB; printf("sizeof AAA is %d/n原创 2010-12-05 17:04:00 · 610 阅读 · 0 评论 -
指针与引用问题
<br />//http://topic.csdn.net/u/20101205/22/eba05c6c-80a1-4316-9a67-6f3abf505ff8.html #include "stdio.h" #include "stdlib.h" #include <string.h> #include <iostream> using namespace std; void fun(int* &x,int* &y) { int a = 3; int b = 4;原创 2010-12-06 14:36:00 · 408 阅读 · 0 评论 -
string转char*
<br />string转char*<br /> 两种方法,<br />1、直接等于<br /> string str = "abcde"; <br /> int len = str.size();<br /> char* pp = (char*)malloc(len+1);<br /> pp = str.c_str();<br /><br /> 2、<br /> string str = "abcde"; <br /> int len = str.size();<br /> char*原创 2010-12-09 16:46:00 · 626 阅读 · 1 评论 -
assert使用
<br />多用assert,能很好找到程序出错位置。<br />// assert.c #include <stdio.h> #include <stdlib.h> #include <string.h> /* 断言。当f为假时,输出当前断言的表达式,及代码所在位置的信息(函数名、源文件名、行号),并退出程序,返回-1。 */ #define ASSERT()/ printf("__funtion__:%s(), __file__:%s, __line__:%d/n",__func_原创 2011-05-23 14:30:00 · 738 阅读 · 0 评论 -
c调用c++,一个makefile例子
c调用c++,总的目标,是用g++编译生成的// File Name: test_cpp.h #ifndef TEST_CPP_H #define TEST_CPP_H extern "C" void c_call_cpp_printf(char* str); class TestCpp { public: TestCpp(char* p_char_p); ~TestCpp(); void test_cpp_printf(); private: char原创 2011-05-23 14:41:00 · 909 阅读 · 0 评论 -
对类里成员函数返回私有数据成员的操作
对类里面的私有指针,自己犯这样的错误: 1、 对返回指针直接赋值 god.return_pointer() = "change/n"; 当然这样编译器会报错。 2、妄想通过别的指针赋值 char* p = god.return_pointer(); p = "change/n"; 这样私有成员指针当然没有被改变到。确做法应该是增加一个原创 2011-06-15 16:10:00 · 1214 阅读 · 0 评论 -
void pointer as unknown argument type 和C回调函数问题
// FILE NAME:c_callback_funtions_void.c#include #include // exit()#include // bzero()#include#include#includetypedef void TaskFunc(void* argument);void do_something(Task原创 2011-06-17 17:05:00 · 590 阅读 · 0 评论 -
使用大于32位数的问题
注意三点: 1、unsinged long 只是32位,long long 才是64位。2、printf打印输出 %d 表示有符号, %u表示无符号。3、%x只打印输出8 BYTE 。 // FILE NAME:unsigned_long.c#include #include // exit()#include // bzero(原创 2011-06-20 14:26:00 · 747 阅读 · 0 评论 -
boost shared_ptr 及C++内存管理的一些总结
先从实际问题开始讨论, 有个视频采集线程,采集到一帧视频数据, 这帧数据要给存储模块(线程)、RTSP模块,RTMP模块使用。 像这样的情况,内存的申请是在采集线程, 但释放就不能是在采集线程了,所以要实现,谁最后使用,谁释放。如图所示: 需求明确,但是代码怎么实现呢? 答案是用到智能指针实现! 智能指针又是怎么实现呢? 智能指针使用引用技术实现, 当指针传递时,引用加1,当指针使用原创 2015-12-16 16:50:56 · 1295 阅读 · 2 评论 -
double类型数据初始化
看ffmpeg代码,但到有把double类型的数据初始化为NAN,百度一下,NAN: Not A Number。 NAN定义在#include 。 下面直接帖代码介绍一下NAN的应用 double d = NAN; printf("d = %f\n", d); if (isnan(d)) { printf("d is NAN\n"); } else { printf原创 2016-08-31 11:58:50 · 11176 阅读 · 0 评论 -
json数组笔记
数组: Json::Value root; Json::Value item; Json::Value arrayObj; root["Transcodec"] = "Transcodec"; //root.append(item); for (int i = 0; i < 3; ++i) { item["id"] = 1904967 + 1904967; if原创 2017-03-24 10:15:49 · 423 阅读 · 0 评论 -
boost share_ptr的使用例子
#include <stdio.h> #include <iostream> #include <string> #include <map> #include <boost/shared_ptr.hpp> using namespace std; // g++ -c boost_share_ptr.cpp -I ../boost_...原创 2018-04-01 09:00:09 · 351 阅读 · 0 评论 -
cpp-netlib使用
1. 官网下载 cpp-netlib-0.12.0-final.zip; 2. 编译 cpp-netlib-0.12.0-fina; 2.1 修改build.sh如下: -DBOOST_INCLUDEDIR="../boost_1_66_0" \ -DBOOST_LIBRARYDIR="../boost_1_66_0/stage/lib" \ 2.2...原创 2018-08-12 11:34:27 · 2712 阅读 · 0 评论 -
uml建模
<br />http://www.uml.org.cn/oobject/201006243.asp<br /> <br />动物 鸟 翅膀 O2 等类关系转载 2010-09-26 14:13:00 · 393 阅读 · 0 评论 -
base64编码
<br /> base64编码原理:<br /> 采用64个基本的ASCII码字符对数据进行重新编码,它将需要编码的数据拆成字节数,以三个为一族,按照顺序排列24位数据,再把这24位数据分成4 组,每组6位,再在每组的最高位补2个0凑足一个字节,如所需的编码数据的字节数不是3的整数,也就是说在分组时最后一组不够3个字节的,在最后一组填充 1-2个0字节,并在最后编码完成之后在结尾添加1-2个'='<br /> <br />#include <stdio.h> #include <string原创 2010-09-21 16:30:00 · 410 阅读 · 0 评论 -
类的static函数成员在定义时不用要static
否则出错: cannot declare member function ‘static int Foo::bar()’ to have static linkage 参考:http://cplusplusWRONG Foo.h: class Foo { public: static int bar(); }; Foo.cc: static int Foo::bar() { // stuff } WORKS Foo.h: class Fo原创 2010-09-20 17:43:00 · 1007 阅读 · 0 评论 -
iterator
iterator是C++标准库(STL)中的迭代器~~~比如你建一个链表(要记得#include #include )list A;再list::iterator it,这样,就可以对链表进行遍历了~其实,你可以把它理解成类似指针的东西~当然,只是用处差不多,使用方式和声明方式可是完全不同的喔~~PS:再给你一个简单的小程序段,可以说明iterator的用处~原创 2010-05-11 16:37:00 · 420 阅读 · 0 评论 -
回调函数
#include #include #include using namespace std; typedef void (*CALLBACK)(int a,int b); class base { private: int m; int n; static CALLBACK func; public: void registercallback(CALLBACK fun,int k,int j); void callcallback(); }; CALLBACK bas原创 2010-07-20 09:52:00 · 382 阅读 · 0 评论 -
关于基类指针、派生类指针、基类对象派、生类对象问题
<br />1、基类指向派生类的指针<br />2、派生类指向基类的指针<br />3、以及将派生类指针强制转换为基类指针<br />4、将基类指针强制转换为派生类指针<br /> <br />无论是基类指向派生类还是派生类指向基类,重点就是哪个类的指针就调用哪个类的方法,而输出的是指针指向的对象。<br /> <br />基类指向派生类的指针即将派生类对象赋给基类指针,如果输出的话,调用的方法是基类的方法,输出的是基类在派生类中的成员(想要通过基类指针调用那些只有派生类才有的成员将会产生语法错误 )。<原创 2010-07-22 10:33:00 · 813 阅读 · 0 评论 -
C语言的一些测试程序
+--------------------------------++ 1、unsigned ling 大小 ++--------------------------------+--------------------------------------------------------------------------------------------原创 2010-05-29 09:49:00 · 723 阅读 · 1 评论 -
一个C++拷贝构造函数的例子
<br />#include <iostream> using namespace std; class Vector { public: Vector(int s=100); Vector(Vector &x); int& elem(int ndx); void display(); void set(); ~Vector(); private: int size; int *buffer; }; Vector::Vector(Vector &x) {原创 2010-07-26 11:37:00 · 494 阅读 · 0 评论 -
C++容器
vector用来代替数组,也就是,要经常用下标运算的地方 list是链表,多用表经常使用插入删除的地方 map是图,比如做一个字典了,电话薄了,会用到 queue很少用,比如排队买火车票的队列,就是这种结构 set更少用,指的是一个无序集合。(我还没有用过呢) vectorintValues(10);是10个元素的1个向量 vectorintValues[10];是数组,含10个空向量 map是哈希表; list是链式存储的线性表,也叫“链表”;转载 2010-08-04 10:16:00 · 487 阅读 · 0 评论 -
动态参数,用于debug tracer
<br />#include <stdlib.h> #include <stdio.h> //#include <va_list.h> #include <stdarg.h> using namespace std; //#define NDEBUG 0// #ifndef NDEBUG // debug mode class tracer { public: tracer(const char* file, int line) : file_(file), line_(原创 2010-08-03 16:12:00 · 637 阅读 · 0 评论 -
C++容器例子
<br />参考:<br />http://cjbskysea.blogbus.com/logs/39993224.html<br /> <br />例1、vector<br />#include <vector> #include <string> #include <iostream> #include <iterator> #include <algorithm> using namespace std; #pragma warning(disable:4786) //vector和其迭转载 2010-08-06 09:53:00 · 684 阅读 · 0 评论 -
STL之string
<br />#include <iostream> #include <string> #include <stdio.h> using namespace std; int main() { string preSuffix; string temp = "rtsp://192.168.1.168:8888/test.h264"; cout<<temp<<endl; cout<<"temp.size():"<<temp.siz原创 2010-08-14 10:13:00 · 867 阅读 · 4 评论 -
C++基础 - 内置类型和类类类型的初始化
<br />转自:C++基础 - 内置类型和类类类型的初始化<br /> <br />1、函数体外的内置类型变量被自动初始化为0。<br /> <br />2、如果构造函数使用 变量参数 对类的数据成员进行初始化,此成员将是未定义状态。訪类无法被 默认构造。<br /> <br />3、构造函数 初始化表,对数据成员的初始化顺序 按 定义的顺序。<br /> <br />4、。。。转载 2010-08-20 09:58:00 · 446 阅读 · 0 评论 -
STL之vector
<br />#include <iostream> #include <string> #include <vector> #include <stdio.h> #include <string.h> using namespace std; int main() { vector<string> vvv; string str1 = "yuanzhenhai"; string str2 = "www.pyp.edu.cn"; string原创 2010-08-19 16:09:00 · 443 阅读 · 0 评论 -
c++线程调用函数必须为static
<br />c++线程调用函数必须为static<br /> <br />error: argument of type 'void* (My_Thread::)(void*)' does not match 'void *(*)(void*)'<br /> <br /> <br />http://topic.csdn.net/u/20100825/15/0b246782-e34e-4716-bd25-fc269d0617cd.html原创 2010-08-26 09:46:00 · 1521 阅读 · 0 评论 -
const 用法
<br />1、const int funtion_1(int a,int b);<br /> 限定,在外面不允许进行修改函数funtion_1()的返回值。<br /> <br />2、int funtion_2(const int a ,const int b);<br /> 在函数funtion_2()中不允许修改参数x。<br /> <br />3、const int funtion_3(const int a ,const int b);<br /> 既不允许修改函数的返回值,原创 2010-08-28 14:33:00 · 529 阅读 · 0 评论 -
C++复习
成员函数的指针:void (Time∷*p2)( ); //定义p2为指向Time类中公用成员函数的指针变量数据类型名 (类名∷*指针变量名)(参数表列); p2=&Time∷get_time;使指针变量指向一个公用成员函数的一般形式为指针变量名=&类名∷成员函数名; 共用数据的保护:既要使数据能在一定范围内共享,又要保原创 2010-04-28 09:29:00 · 858 阅读 · 0 评论