C/C++
文章平均质量分 63
dogyao
每天多一点。总相信美好的事情将要发生!!!
展开
-
C/C++宏定义中#与##区别
【转载自】:http://blog.csdn.net/huang_xw/article/details/7648179 // #表示:对应变量字符串化 // ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符 #include <stdio.h> #define trace(x, format) printf(#x " = %" #转载 2015-07-08 10:00:52 · 321 阅读 · 0 评论 -
SIGPIPE信号
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件. 最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程. 具体的分析可以结合TCP的”四次握手”关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各转载 2016-08-01 02:11:42 · 262 阅读 · 0 评论 -
关联容器
标准库共提供了8个关联容器map 关联数组:保存关键字-值对set 关键字即值,即只保存关键字的容器multimap 关键字可重复出现的mapmultiset 关键字可重复出现的setunordered_map 用哈希函数组织的mapunordered_set 用哈希函数组织的setunordered_multimap 用哈希函数组织,关键字可重复出现的mapunordered_mul原创 2016-06-16 19:26:28 · 314 阅读 · 0 评论 -
回调函数的作用
1.回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于系统调用。3.所谓回调函数就是按照一定的形式由你定义并编写实现内容,当发生某种事件时,而由系统或其它原创 2016-06-15 19:41:49 · 710 阅读 · 0 评论 -
C++ inline 函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int first, int secend) {/****/}; inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。与非inline函数不同的是,inline函数转载 2016-02-24 10:05:44 · 224 阅读 · 0 评论 -
C++:string,string.h和cstring的区别
带.h的头文件是C中的头文件,string.h头文件是C中的头文件。在C++中对其进行了修改,对应与C++中的cstring头文件,其都是如strcpy,strcmp等的操作。 cstring头文件也是C++中的头文件,在其内部定义了一个string类及其一些操作;并且其还包括对字符串如strcpy,strcmp等的操作(即包含了cstring头文件)。原创 2016-03-17 01:30:57 · 429 阅读 · 0 评论 -
static,const,static const , const static成员初始化
1.类里的const成员初始化:在一个类里建立一个const时,不能给它初值。像class A{ public: const int i=100; A { } }; 这样的初始化方式是不能通过编译的,因为在类对象里进行了存储空间分配,编译器不能知道const的内容是什么,所以不能把它用作编译期间的常量。这意味着对于类里的常数表达转载 2015-11-15 15:57:03 · 310 阅读 · 0 评论 -
C++ typedef总结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:转载 2015-10-25 11:36:34 · 218 阅读 · 0 评论 -
#pragma 预处理指令详解
#pragma 预处理指令详解 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为:转载 2015-09-01 20:50:49 · 192 阅读 · 0 评论 -
C++中Operator类型强制转换成员函数解析
http://www.jb51.net/article/41333.htm类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型。转换函数又称类型强制转换成员函数,它是类中的一个非静态成员函数。它的定义格式如下: class <类型说明符1>转载 2015-08-26 07:29:49 · 391 阅读 · 0 评论 -
c++中的可变参数
1、可变参函数的原理C/C++函数的参数是存放在栈区的,并且参数的入栈是从参数的右边开始,即最后一个参数先入栈,而第一个参数最后才入栈,所以,根据栈的后进先出性质,函数总能找到第一个参数。所以,可变参函数的实现必须能够从已知参数中获取到函数所需要参数的个数; 例如printf函数,第一个参数就是一个格式串,而后面所需要的参数个数能够从格式串中得到。 2、可变参函数的设计标准头文件stdarg.h转载 2015-07-28 08:54:40 · 785 阅读 · 0 评论 -
c++ 中的单冒号与双冒号
【转载自】:http://blog.sina.com.cn/s/blog_8961925401016mjc.html1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;} ; XXX(2)构造函数后面的冒号起分割作用,是类给成员变量赋转载 2015-07-14 09:19:11 · 740 阅读 · 0 评论 -
C++模板详解
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型转载 2015-07-14 09:17:31 · 638 阅读 · 0 评论 -
#define 中的“#”和“##”
【转载自】:http://blog.163.com/y845766643@126/blog/static/17104630220113289280333/define f(a,b) a##bdefine d(a) #adefine s(a) d(a)void main( void ) { puts(d(f(a,b))); puts(s(f(a,b))); }输出结果: f(转载 2015-07-27 08:49:15 · 356 阅读 · 0 评论 -
#define宏中的“#”和“##”
【转载自】:http://blog.163.com/y845766643@126/blog/static/17104630220113289280333/#define f(a,b) a##b #define d(a) #a #define s(a) d(a) void main( void ) { puts(d(f(a,b))); puts(s转载 2015-07-27 09:16:48 · 211 阅读 · 0 评论 -
C++命名空间
【转载自】:http://blog.csdn.net/passball/article/details/6630877本讲基本要求 * 掌握:命名空间的作用及定义;如何使用命名空间。 * 了解:使用早期的函数库重点、难点 ◆命名空间的作用及定义;如何使用命名空间。在学习本书前面各章时,读者已经多次看到在程序中用了以下语句: using namespace std;这就转载 2015-07-08 12:40:41 · 237 阅读 · 0 评论 -
C socket 发送HTTP简单介绍
HTTP请求头部样例:GET http://www.baidu.com/ HTTP/1.1Accept: html/textHost: 220.181.6.175:80Connection: Close 这是一个请求百度页面的头部。属性和值的命名中间用:和空格隔开,结尾使用\r\n,头部结束使用\r\n\r\nGET表示采用GET方法,当然我们常见的还有POST等其转载 2017-11-30 00:39:54 · 1440 阅读 · 0 评论