发布时间:2013-01-09 12:12:56
在写股票软件过程中, 我希望把读取数据和显示数据的过程分离,他们的数据交换通过一个共享的链表来解决。通过shmget,可以获得一块共享的内存,但通常的情况下,一般申请的都是连续的空间,也就是说,我需要把数据存成一个数组,放在共享中。这个不是我的初衷。最初,我希望能只共享一个头指针,以为这样就可以直接共享链表了。但是结果是不可行的。经过一番实验和google,最终找到了解决办法。关键点:1.通常每个节点node,其中的next域存储的是*node, 即指向下个节点的指针。在这里,我们不能使用*node,否则读取程序是没法正确读取的。具体原因不清楚,但是经过实践证明,不可行。所以我们使用一个节点内......【阅读全文】
发布时间:2013-01-09 12:07:57
第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。但是宏也有很多的不尽人意的地方。1、宏不能访问对象的私有成员。2、宏的定义很容易产生二意性。我们举个例子:#define square(x) (x*x)我们用一个数字去调......【阅读全文】
发布时间:2013-01-09 12:01:57
Linux汇编语言开发指南 一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。 大多数情况下 Linux 程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在 Linux 操作系统中也可以用完全用 C ......【阅读全文】
发布时间:2013-01-09 12:01:02
嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。 例如,我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写: subsystem:  ......【阅读全文】
发布时间:2013-01-09 12:00:52
使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 一、示例 下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnu normal_libs = foo: $(objects) ifeq ($(CC),gcc) &......【阅读全文】