c
文章平均质量分 61
m4vsak123
这个作者很懒,什么都没留下…
展开
-
全局宏定义
首先我们要理解定义和声明的区别,举个常见的例子,比如有一个common.c文件中有这样一句话 int var = 7; 然后其对应的common.h文件中有这样一句: int var; 那么上面一句叫...原创 2010-12-22 22:59:18 · 1071 阅读 · 0 评论 -
c++ 构造函数和析构函数调用顺序
#include <iostream>#include <vector>using namespace std;class Organisms{public: Organisms() { cout<<"Organisms constructor"<<endl; } ~Organisms() ...原创 2013-04-25 16:54:41 · 179 阅读 · 0 评论 -
C++中的虚函数和虚函数表
请看这一篇文章:http://hi.baidu.com/wangwangkunkun/blog/item/01321588f09334dffc1f1001.html (wangwangkunkun的空间)原创 2012-04-02 18:17:15 · 93 阅读 · 0 评论 -
epoll高效的原因
epoll高效的原因: 使用内核中断实现,中断后调用处理函数处理,是异步的。 http://blog.chinaunix.net/uid-17299695-id-3059110.html原创 2013-03-18 11:10:18 · 160 阅读 · 0 评论 -
UNIX domain socket传递文件描述符
c版本(UNIX高级编程中的例子): // sendmsg.h#ifndef SENDMSG_H#define SENDMSG_H#include <sys/types.h>int send_fd(int fd, int fd_to_send);int recv_fd(int fd, ssize_t (*userfunc)(int, const vo...原创 2012-06-19 18:41:40 · 560 阅读 · 0 评论 -
c++中函数参数返回值用string好还是const char *好
有这样一个函数test需要两个字符串作为参数,那么test的原型定义成test(string, string)呢还是定义成test(const char*, const char*)还是其他呢? 当这样使用时 test("hello", "world"); 如果原型是第一种,就需要首先构建string对象,然后因为是值传递需要内存拷贝。如果是第二种,由于需求是需要两个string型变量...原创 2012-02-01 07:38:36 · 709 阅读 · 0 评论 -
unix domain socket传递描述符
用unix domain socket在进程间传递描述符。 传递描述符的机制稍后我会用图表示出来。 代码已经存在附件中。原创 2012-04-25 15:18:39 · 123 阅读 · 0 评论 -
google的gtest测试框架
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html原创 2011-12-21 18:17:41 · 74 阅读 · 0 评论 -
windows下TCP通讯
客户端#include <iostream>#include <Windows.h>#include <Winsock.h>using namespace std;int main(){ //客户端 WSAData wsad; WSAStartup(MAKEWORD(2,2),&wsad); /...原创 2011-12-20 18:17:36 · 88 阅读 · 0 评论 -
静态库与共享库
在用c c++编程时经常用到库,库有静态的,和共享库。在这里我只是说linux系统下的静态库和共享库。有人把共享库称为“动态库”,这是相对于“静态库”而言的,是为了说明在程序链接它时的不同。不过从更宏观的层次上叫它共享库更贴切。 用例子说明吧: 现在有这几个文件: zerg.h zerg.cpp hyd...2011-11-01 19:00:22 · 79 阅读 · 0 评论 -
c++中的拷贝构造函数
int a = 2;int b = a; 在c++中,上面的代码没有问题,对于int, string,char之类的变量可以直接互相赋值,没问题。但是如果是某个类的对象互相赋值,如: Example ex1;Example ex2 = ex1; 这样,一般情况下也是没有问题的,可以认为类中有个函数叫做"默认的拷贝构造函数"(这个名字本人觉得很恶心),这个...2011-07-14 16:44:50 · 53 阅读 · 0 评论 -
简单的tcp通讯
简单的tcp通讯例子。 server端 /* tcp_server.c */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include &l...原创 2011-07-12 14:55:08 · 68 阅读 · 0 评论 -
c++线程池
原创 2011-09-26 09:17:06 · 67 阅读 · 0 评论 -
c++中的 extern "C"
比如说你用C开发了一个DLL库,为了能够让C++语言也能够调用你的DLL输出(Export)的函数,你需要用extern"C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:#ifdef __cplusplusextern "C" {#endif/**** some declara...原创 2011-06-21 20:33:01 · 73 阅读 · 0 评论 -
websocket通讯协议(10版本)简介
前言:工作中用到了websocket 协议10版本的,英文的协议请看这里:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10这篇文章相当于工作的总结吧。 首先, 你需要简单了解一下为什么会诞生websocket通讯协议,web上的通讯一般都是基于HTTP(超文本传输协...原创 2011-09-22 18:27:16 · 454 阅读 · 0 评论 -
epoll服务器
epoll服务器。2011-09-21 22:33:32 · 52 阅读 · 0 评论 -
c语言操作mysql数据库(Ubuntu11.04)
系统:Ubuntu11.04 1.刚安装完系统是没有mysql数据库的,首先我们要安装mysql数据库: sudo apt-get install mysql-server-5.1 自动的,mysql就安装好了(包含server和client)。 2.需要用c语言去操作mysql,我们...2011-06-11 17:43:23 · 119 阅读 · 0 评论 -
c,c++ little knowledge
1. 把一个string型字符串全部转成小写。 注释:可以用STL中的<algorithm>中的transform()函数。 string s = "Picky";transform(s.begin(), s.end(), s.begin(), tolower);cout<<s<<endl; result: ...原创 2011-08-31 15:00:57 · 81 阅读 · 0 评论 -
c++ vector list map在遍历中删除元素
c++ STL 中的vector, list, map这些数据结构,经常需要在遍历时删除其中的元素,但是又不能直接删除,会出错。 在你调用erase方法删除元素时,erase方法会返回下一个元素的迭代器,利用这一点,可以写这样的代码: for(vector<int>::iterator it=d.begin();it!=d.end(); ){ ...2013-05-07 14:47:02 · 600 阅读 · 0 评论