
C/C++
文章平均质量分 63
yingxian_Fei
若是注定发生,必定如你所愿
展开
-
GTK函数
1, void gtk_widget_set_size_request (GtkWidget*widget,gint width,gint height);设置构件的最小尺寸函数说明:该函数设置构件的最小尺寸。其中尺寸由第 2 和第 3 个参数宽(width)与高(height)两个参数来决定。 2,gtk_widget_modify_bg用来设置某个构件的原创 2011-12-31 10:12:42 · 1383 阅读 · 0 评论 -
Boost.Function内核剖析
From:http://www.youkuaiyun.com/article/2011-03-22/294383/1摘要:回顾Boost.Function的用法 上一篇文章中我曾提到,Boost.Function有两种使用形式,一是根据其所指涉的函数的参数个数不同而决定使用 boost::function0, boost::function2, boost::function3乃至(最高)boost:转载 2014-02-19 22:57:07 · 1560 阅读 · 0 评论 -
boost线程创建方式总结
最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程库。在创建线程时遇到了几种线程创建方式现总结如下: 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0& thre转载 2014-02-19 22:52:14 · 1236 阅读 · 0 评论 -
boost线程库学习--(1)创建和执行线程
今天开始学写boost线程库,该程序是一个最基本的使用boost线程库的测试程序,开发环境是linux环境。测试源程序如下,该程序实现如下功能:1、编译运行后程序启动一个线程每隔一秒打印一个helloworld,主线程每隔一秒打印一个main,程序简单已经添加注释/* *File:test.cpp *Author:yingxianFei *Date:2014-2-19 *Des原创 2014-02-19 21:41:45 · 1255 阅读 · 0 评论 -
boost线程库学习--(3)线程中断
线程不是在任意时刻都可以被中断的。如果将线程中函数中的sleep()睡眠等待去掉,那么即使在主线程中调用interrupt()线程也不会被中断。thread库预定义了若干个线程的中断点,只有当线程执行到中断点的时候才能被中断,一个线程可以拥有任意多个中断点。thread库预定义了共9个中断点,它们都是函数,如下:1. thread::join();2. thread::time转载 2014-02-19 23:15:32 · 934 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plaincopyprint?#include ofstream //文件写操作 内存写入存储设备 ifstre转载 2014-03-05 11:13:10 · 818 阅读 · 0 评论 -
C++中类成员函数作为回调函数
回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成转载 2014-03-14 11:22:26 · 1114 阅读 · 1 评论 -
C语言文件操作
1.文件的打开fopen()文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名转载 2014-03-18 14:36:35 · 604 阅读 · 0 评论 -
linux下网络程序遭遇SIGPIPE的解决(转)
问题描述:我的一个服务器程序, 在Windows下运行正常. 但当在Linux(centos 6.3)下,进行对端未开启的异常测试时,出现莫名退出 . 最后跟踪到是write调用导致退出. 用gdb执行程序, 退出时提示"Broken pipe". 问题分析:对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的转载 2014-03-18 23:21:27 · 1139 阅读 · 0 评论 -
嵌入式 编程常见错误
1.提领指向不完全类型的指针structhostent{ char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; #defineh_addr h_转载 2014-03-18 23:22:51 · 2078 阅读 · 0 评论 -
source insight不能识别.hh等头文件的问题
有时候用source insight会出现不能跳转到hh原创 2014-06-12 22:54:06 · 5836 阅读 · 1 评论 -
C++可变长数组测试
C++中可以使用#include #include using namespace std;using std::vector;int main() { int len = 3; vector array(len); for (int i = 0; i array[i] = i; cout原创 2014-06-18 16:04:06 · 1211 阅读 · 0 评论 -
boost线程库学习--(2)创建带线程的类并测试
本例子将创建一个带有线程的类,并测试。程序功能如下:程序启动后创建一个带有线程的对象,该对象每隔一秒打印一个helloworld,该对象的线程与主线程同时运行,主线程每隔yimiao打印一个main。测试环境为ubuntu12.04,使用boost1_55的库,程序源代码如下:1、程序源代码/* *File:test.cpp *Author:yingxianFei *Date:2原创 2014-02-19 22:44:50 · 1077 阅读 · 0 评论 -
PC机交叉编译ARM boost库
从官网下载所需版本的boost源代码,解压进入文件:[plain] view plaincopy./bootstrap.sh 然后会自动产生一个project-config.jam文件,打开该文件,修改“using gcc”一行:[java] view plaincopyusing gcc : : arm-none-ea转载 2014-02-17 21:47:45 · 827 阅读 · 0 评论 -
在linux下使用c++线程池threadpool
Boost的thread库中目前并没有提供线程池,我在sorceforge上找了一个用boost编写的线程池。该线程池和boost结合的比较好,并且提供了多种任务执行策略,使用也非常简单。 下载地址: http://threadpool.sourceforge.net/ 使用threadpool: 这个线程池不需要编译,只要在项目中包含其头文件就可以了。转载 2014-02-15 19:48:32 · 1257 阅读 · 0 评论 -
GTK相关函数知识
<!--pre.western {font-family:"DejaVu Sans Mono",monospace}pre.cjk {font-family:"方正宋体",monospace}pre.ctl {font-family:"DejaVu Sans Mono",monospace}p {text-indent:0.29in; margin-bottom原创 2011-12-31 10:25:23 · 1412 阅读 · 0 评论 -
C程序简单学生成绩管理系统
#include#include#include #include#define N 1000 /*定义符号常量,代表学生人数最大值*/int count=0; /*全局变量,用于记录数组的当前位置*/int addn=0; /*全局变量,用于记录插入的学生的编号*/struct student /*定义结构体类型,代表学生信息*/ {char name[9]原创 2011-12-11 22:09:08 · 1868 阅读 · 0 评论 -
Mediastream2 用法介绍及简明实例分析
linphone是一个轻量级voip客户端,linphone的架构设计十分的清晰,其底层音视频引擎mediastream2是一个独立的模块,基于它可以很容易的实现各种音视频的应用。linphone 整体架构介绍 http://www.linphone.org/eng/documentation/dev/linphone拥有自己的用户接口和核心引擎(音频/视频引擎),允许在相同的函数转载 2014-02-20 19:06:57 · 4112 阅读 · 0 评论 -
带video和audio的mediastream.c
在运行mediastream.c之前确保你已经编译了ortp、ffmpeg、x264、speex、msx264、mediastream2,具体编译的东西看我之前的两篇文章编译mediastreamer2和ffmpeg------------------------------------------------------------------------先稍微了解下mediastrea转载 2014-02-20 19:12:44 · 1743 阅读 · 0 评论 -
BOOST ThreadPool 编译错误"TIME_UTC was not declared in this scope"
boost版本在1.50后,将该TIME_UTC这个名字修改为TIME_UTC_, 因此只需要将task_adaptors.hpp中的TIME_UTC修改为boost::TIME_UTC_即可.。我的boost1_55共修改该文件中的两个地方。转载 2014-02-24 23:39:40 · 1165 阅读 · 0 评论 -
boost线程库学习--(4)两个线程间使用队列进行通信
该程序使用boost线程库官方的demo修改而来,实现的功能很简单,主要是我学习两个线程使用队列进行通信使用。程序启动后创建了两个线程,一个用于每隔一秒向队列中加1个整数,另一个线程每隔1秒从队列主哦中取出一个整数。程序代码如下:(1)、测试程序源代码:/* *File name:free_lock_queue.cpp *Author:yingxianFei *Date:2014原创 2014-02-24 20:25:57 · 3476 阅读 · 0 评论 -
C++多线程和消息队列用法
进程是没有活力的,它只是一个静态的概念。为了让进程完成一些工作,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程, 它们可以同时执行进程的地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。 线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主转载 2014-02-14 00:21:29 · 4541 阅读 · 1 评论 -
VC++ ^和gcnew
在VS2010中可能是因为.net是对C++又进行了优化。有些代码不同了,现记录于此,防止以后忘掉了。StreamWriter^ sw = File::CreateText(path);上面的^可能就是引用的意思,就是原来C++中的指针了。sw->WriteLine( "Hello" );其调用方式也是和指针的调用方法的方式是一样的。Thread^转载 2014-02-14 23:43:08 · 1688 阅读 · 0 评论 -
在C#中使用C++编写的类
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现在有一个工程名为NativeCppDll的由C++编写的DLL,里面输出了一个CPerso转载 2014-02-16 09:15:55 · 689 阅读 · 0 评论 -
C++中L和_T()之区别
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:转载 2014-02-14 23:51:13 · 652 阅读 · 0 评论 -
C++映射操作符
dynamic_cast:用法:dynamic_cast ( expression ) 该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *;如果type-id是指针类型,那么expression也必须是一个指针;如果type-id是一个引用,那么expression必须是一个左值。1.如果type-id是一转载 2014-02-14 23:56:26 · 1017 阅读 · 0 评论 -
sscanf的高级用法
从这里抄来的:http://blog.chinaunix.net/uid-26284412-id-3189214.html sscanf(recvbuf,"%*[^/]/%[^ ]s",buf_rev); sscanf(buf, "GET /%[^ ]", buf_rev); 这个是在一个webserver.c里面的例子,通过sscanf()语句可以找到和它前面相转载 2016-06-13 16:01:08 · 984 阅读 · 0 评论