- 博客(21)
- 资源 (5)
- 收藏
- 关注
转载 关于errno = EINTR的小结
如果read()读到数据为0,那么就表示文件读完了,如果在读的过程中遇到了中断则read()应该返回-1,同时置errno为EINTR。 因此判断read的条件如下:if <=0 { if==0 { 表示文件结束, 处理 } if(<0 && errno==EINTR) { 表示中断,处理
2015-12-30 09:44:27 2629
原创 size_t、ssize_t和socklen_t详解
一、size_t解释一:为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。在32位系统上 定义为 unsigned int 也就是说在32位系统上是32位无符号整形。在64位系统上定义为 unsigned long 也就是说在64位系统上是64位无符号整形。size_t一般用来表示一种计数,比如有多少东西被拷贝
2015-12-27 15:23:18 2122
转载 struct和Union的区别
一、Struct 和 Union有下列区别:1.在存储多个成员信息时,编译器会自动给struct第个成员分配存储空间,struct 可以存储多个成员信息,而Union每个成员会用同一个存储空间,只能存储最后一个成员的信息。2.都是由多个不同的数据类型成员组成,但在任何同一时刻,Union只存放了一个被先选中的成员,而结构体的所有成员都存在。3.对于Union的不同成员赋值,
2015-12-27 15:11:12 767
转载 ssize_t和size_t详解
对于赶时间的朋友,只看第一段就好了。 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t 就是无符号型的ssize_t,也就是unsigned long/ unsigned int (在32位下),不同的编译器或系统可能会有区别,主要是因为在3
2015-12-26 00:12:42 41868 6
转载 void 和void*的详解
void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型; 2. 如果函数无参数,那么应声明其参数为void; 3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * ; 4. void不能代表一个真实的变量;
2015-12-26 00:11:22 437
原创 do{}while(0);详解
do...while(0)的妙用在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...w
2015-12-26 00:05:43 764
转载 Linux编程基础——GDB(设置断点)
启动GDB后,首先就是要设置断点,程序中断后才能调试。在gdb中,断点通常有三种形式:断点(BreakPoint):在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式:break 在进入指定函数时停住break 在指定行号停住。break +/-offset 在当前行号的前面或后面的offs
2015-12-23 16:04:43 308
转载 在ubuntu中,终止一个进程或终止一个正在运行的程序
在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。-------------------------------------------------------------------先看两个例子: 例子一:结束某个程序,如Firefox 键入命令:pkill firefox
2015-12-21 23:45:19 13673
转载 c的经典算法
老掉牙 河内塔 费式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色、三色河内塔 背包问题(Knapsack Problem) Ø数、运算 蒙地卡罗法求 PI Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍
2015-12-21 00:17:08 2089
转载 程序员的10种级别
第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。 第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。 第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。 第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。 第五级:技术工人,技
2015-12-20 20:13:47 6692 1
转载 linux动态链接库编写和使用
我们可以创建一种文件里面包含了很多函数和变量的目标代码,链接的时候只要把这个文件指示给链接程序就自动地从文件中查找符合要求的函数和变量进行链接,整个查找过程根本不需要我们操心。这个文件叫做 “库(Libary)”,平时我们把编译好的目标代码存储到“库”里面,要用的时候链接程序帮我们从库里面找出来。静态链接库: 在早期库的组织形式相对简单,里面的目标代码只能够进行静态链接,所以
2015-12-14 23:31:20 311
转载 使用VS2008创建和调用动态链接库
使用VS2008创建和调用动态链接库1. 动态链接库的概念及优点 动态链接库是一个函数和变量的集合,在调用它的程序运行时才被加载。因此,动态链接库和可执行程序是分离的。 动态链接库具有以下优点: (1) 隐藏源代码; (2)实现代码重用; (3)当程序调用DLL中的函数时不需要重新
2015-12-14 23:28:23 3307
原创 int main (int argc,char *argv[])和int mian()
main函数的参数 windows下编程这两个看不出什么区别,在linux下用int main(int argc,char*argv[])进行编程会体会到。前面介绍的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此
2015-12-07 20:18:28 1387
转载 extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数
2015-12-07 19:45:52 279
转载 在linux下编写动态链接库的步骤
在linux下编写动态链接库的步骤类似Windows系统中的动态链接库,Linux中也有相应的共享库用以支持代码的复用。Windows中为*.dll,而Linux中为*.so,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.在linux下编写动态链接库的步骤: 1. 编写库的头文件和源文件.2. 把所有涉及到的源文件用如
2015-12-06 21:02:38 385
转载 12条编程效率的方法
1. 永远不要停止学习和阅读 阅读 书籍,而不只是网站 阅读 只为自我提升,而不是为了下一个项目 阅读 提升你的基础,而不只是最新技术 2. 跟比你聪明的人一起工作 跟比你更聪明的人或者是更有经验的人一起工作,可以让你快速提升 3. 变成一个全才 不要过于钻牛角尖,这可能会让你停滞不前和伤害你的就业前景。 4. 阅读并
2015-12-06 20:59:01 350
转载 静态链接库和动态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生
2015-12-06 20:34:12 231
转载 C++显示类型转换
C++显示类型转换 在C语言中,强制类型转换非常简单。double pi=3.14;int piInt=(int)pi;这个强制类型转换会丢失部分数据(.14),所以如果不加(int)做强制转换,严检查的编译会报错,宽检查的编译会报warning。在C语言中,指针是4字节或者8字节的,所以指针之间的强制转换在转换的时候就如同不同的int之
2015-12-06 11:22:32 545
转载 多播与广播详解(二)
本文讨论基于TCP/IP下的组播编程基础。所有的例子都可以Windows下台运行。本文不会涉及到组播协议的实现,只是讨论组播编程需要的环境及API函数。关于组播的实现和需要的协议笔者将会另写文章讨论。组播描述 组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传送。对其形象的比喻就是类似于广播
2015-12-03 19:52:48 590
转载 广播与多播详解(一)
广播广播是指在一个局域网中向所有的网上节点发送信息。这是UDP连接的一种广播有一个广播组,即只有一个广播组内的节点才能收到发往这个广播组的信息。什么决定了一个广播组呢,就是端口号,局域网内一个节点,如果设置了广播属性并监听了端口号A后,那么他就加入了A组广播,这个局域网内所有发往广播端口A的信息他都收的到。在广播的实现中,如果一个节点想接受A组广播信息,那么就要先将他绑定给地址和端
2015-12-03 19:49:25 1570 1
转载 C++中placement new详解
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; } 首先我们区分
2015-12-03 11:50:23 486
UNix网络编程卷一(第三版)
2015-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人