编程随想录
CSDN拆迁户 @2014-04-07

导航

 

2011年3月14日

摘要: Index:(一) typedef在ADT设计中的影响.(二) typedef使用: (1)定义一种类型的别名 (2)用在旧的C代码中简化struct (3)跨平台 (4)简化复杂(三) typedef的使用陷阱.格式: typedef old_type new_type, 例如:typedef unsigned int UNIT32;typedef char* PTRCHAR;typedef void (*pFunc)(void);typedef int ARRAY [N];(一) typedef在ADT设计中的影响.声明某个指针的别名:typedef struct node * list; 阅读全文
posted @ 2011-03-14 10:07 dos5gw 阅读(219) 评论(0) 推荐(0)
 
摘要: 代码如下:if( bind(local_sock_fd,(struct sockaddr*)(&local_sock_addr),sizeof(struct sockaddr)) == -1){ perror("ERROR bind()"); return -1; }运行时发现终端打印出ERROR bind() :Address already in use转自:http://blogold.chinaunix.net/u2/69143/showart_1019104.html当客户端保持着与服务器端的连接,这时服务器端断开,再开启服务器时会出现:Address a 阅读全文
posted @ 2011-03-14 10:07 dos5gw 阅读(157) 评论(0) 推荐(0)
 

2011年3月10日

摘要: 一)安装软件包以Fedora 14为例################## 与开发相关### GNU devel toolsyum -y install patch libtool autoconf automake### 词法、语法 生成器yum -y install flex bison################## devel library### ncurses 用于linux kernel 等 menuconfigyum -y install ncurses-devel zlib-devel################## 网络相关yum -y install sambay 阅读全文
posted @ 2011-03-10 14:33 dos5gw 阅读(148) 评论(0) 推荐(0)
 

2011年3月8日

摘要: 函数原型:int select(intmaxfdp,fd_set*readfds,fd_set*writefds,fd_set*errorfds,struct timeval*timeout);第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄,当然Unix下任何设备、管道、FIFO等都是文件形式,全部包括在内,所以毫无疑问一个socket就是一个文件,socket句柄就是一个文件描述符。fd_set集合可以通过一些宏由人为来操作,比如清空集合FD_ZERO(fd_set *),将一个给定的文件描述符加入集合之中FD_ 阅读全文
posted @ 2011-03-08 14:28 dos5gw 阅读(252) 评论(0) 推荐(0)
 

2011年3月4日

摘要: 下午调试程序的“segmentation fault”,先上代码:int main(){ printf("entering main() /n"); init_globals(); /*initialize global variable defined in main.c*/ init_iic(); init_spi(); if(init_sock() == -1){ exit(1); } sock_listen_tid = pthread_create(&sock_listen_tid,NULL,listen_thread,NULL); if( ... 阅读全文
posted @ 2011-03-04 16:13 dos5gw 阅读(768) 评论(0) 推荐(0)
 

2011年3月3日

摘要: 在代码中经常可以看到下面的宏定义:#define FOO(X) do { f(X); g(X); } while (0)#define FOO(X) if (1) { f(X); g(X); } else这里的while(0)结构看起来似乎没有意义, 下面是一个相反的例子, 假如不用do-while结构:#define FOO(x) f(x);g(x)if (condition)BAR(1);else;编译器将宏展开为:if (condition) foo(1); goo(1);else ;可以看到goo(1)脱离了if的控制。例2:加上{ }的情况呢#define BAR(x) {foo.. 阅读全文
posted @ 2011-03-03 15:55 dos5gw 阅读(190) 评论(0) 推荐(0)
 

2011年3月1日

摘要: Index: (一) extern在C语言中作声明; (二) static变量的作用域, C++中的静态成员; (三) const关键字在函数重载中的作用.(一)extern关键字首先,声明与定义的区别: 定义:编译器会为变量或函数分配内存 //如:int a=1; 声明:只是表明其存在,但没有分配内存这个过程。//如:int a; 带或带externextern的两个作用:(1)extern声明/定义变量和函数. 1.声明变量或函数, 例如extern int val; extern void fun (void); 在aaa.cpp 定义函数: void func(); 在bbb.cpp 阅读全文
posted @ 2011-03-01 16:59 dos5gw 阅读(188) 评论(0) 推荐(0)
 

2011年2月28日

摘要: 名词解释RTTI : Runtime Type Information, 意思是:运行时类型信息。它提供了运行时确定对象类型的方法。C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。使用标准C++的类型转换符:static_ca 阅读全文
posted @ 2011-02-28 20:47 dos5gw 阅读(169) 评论(0) 推荐(0)
 

2011年2月27日

摘要: 程序可执行文件(*.out)和运行时的内存分布一、程序运行时内存分布一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由手动分配释放 。3、已经初始化的全局变量和静态变量(.data)4、已经初始化的全局变量和静态变量(.bss),bss在文件中不占据空间。4、文字常量区(.rodata) —常量字符串就是放在这里的。5、程序代码区(text)—存放函数体的二进制代码。符串常量一般放在“.rodata”段里。-----高地址-----stack | 阅读全文
posted @ 2011-02-27 21:12 dos5gw 阅读(386) 评论(0) 推荐(0)
 

2011年2月9日

摘要: POSIX线程:一个完成的线程/进程包括三部分,代码+数据+内存栈;子线程和子进程在被创建的时候,对于fork()创建子进程,三部分都要复制一份,数据包括比如文件描述符,虚拟内存,子进程关闭文件描述符不会影响父进程中的描述符;对于pthread_create()创建子线程的时候,只有内存栈被复制,其他的部分(代码,数据都是共享的),如果一个线程改变了某变量的值,其他所有的线程都调用的是改变之后的值;头文件#include 编译参数: -lpthread(一)涉及到的类型:pthread_t, pthread_attr_t, pthread_cond_t, pthread_mutexattr_t 阅读全文
posted @ 2011-02-09 18:36 dos5gw 阅读(520) 评论(0) 推荐(0)