摘要: 最近在看别人写的代码,关于宏存放在哪个头文件这一点上真是异常的郁闷。现总结如下:在将程序模块化的同时,重要的是确定自己所要使用的函数和宏的存放文件。函数或者宏可以分为专用和通用。可以将专用的根据其功能存放到几个文件(.c 和 .h)中当成一个模块。通用的可以有条理的放在一起。宏中的常量有时候单独分出来,会使代码更加的清晰(主要原因是看作者是这么干的)。在几个小的专用模块(功能互相不是太干扰)中的宏,可以将常量一起单独存放到一个const.h中。什么叫常量呢?比如我要访问某几个寄存器的端口。这个就可以声明在const.h中,而我在自己的程序假如定义个buf,将buf的大小定义为宏,这就不能被叫做 阅读全文
posted @ 2011-09-14 21:17 Jack204 阅读(183) 评论(0) 推荐(0) 编辑
摘要: The standard predefined macros are specified by the C and/or C++language standards, so they are available with allcompilers thatimplement those standards. Older compilers may not provide all ofthem. Their names all start with double underscores.__FILE__--------------当前文件的名字__BASE_FILE--------假设a.h.. 阅读全文
posted @ 2011-09-14 17:24 Jack204 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 下面的模型一般都用在核心服务器或者kernel中的多任务控制部分!十分有用。消息发送函数原型:send(dest, message);recv(src, message);下面将接收消息的叫做Server,发送消息的叫做Client.1 Client -> Server (send)if(server.state != Recieving) //将Client挂起,并且加入Server的消息队列。 set(client.state); block(client); add client to server's Queue.else copy message to server;  阅读全文
posted @ 2011-09-14 16:58 Jack204 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 问题1、判断链表是否存在环。 设置两个指针fast和slow,初始值都指向头指针,slow每次前进一步,fast每次前进两步。如果存在环,则fast必先进入环,而slow后进入环,两个指针必定相遇(见下面的证明1)。(当然,fast先到达尾部为NULL,则为无环链表)。程序如下: bool isExitsLoop(Node* head) Node *slow = head, *fast = head; //fast && fast->next保证了fast可以接着向下移动 while(fast && fast->next) slow = slow-& 阅读全文
posted @ 2011-09-14 11:10 Jack204 阅读(3612) 评论(0) 推荐(0) 编辑