摘要:
在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。
变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)。变量是大小写敏感的,“foo”、“Foo”和“FOO”是三个不同的变量名。传统的Makefile的变量名是全大写的命名方式,但我推荐使用大小写搭配的变量名,如:MakeFlags。这样可以避免和系统的变量冲突,而发生意外的事情。
阅读全文
摘要:
每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。
我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNIX的标准Shell解释执行的。除非你特别指定一个其它的Shell。Makefile中,“#”是注释符,很像C/C++中的“//”,其后的本行字符都被注释。
阅读全文
摘要:
规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。mak... 阅读全文
摘要:
make 命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。
首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:
1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。
阅读全文
摘要:
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 阅读全文
摘要:
过程如下所示:/* shrobj.c 文件 */const char *myfunc(){ return "Hello World";} /* hello.c 文件 */#include <stdio.h>extern const char *myfunc();main(){ printf("%s\n", myfunc()); return 0;}编译: gcc -fpic -c sh... 阅读全文
摘要:
如何在C++中调用已经被编译好的C函数?下面的小例子展示了这个过程:1. 假设某C函数如下定义/* file foo.c*/#include <stdio.h>int add(int x, int y){ return x + y;}编译并生成DLL:gcc -fpic –c foo.cgcc –shared -o foo.dll foo.o2. 在C++中调用... 阅读全文
摘要:
Starting EmacsTo enter Emacs , just type its name: emacsTo read in a file to edit, see Files below. Leaving EmacsSuspend Emacs C-zExit Emacs C-x C-cFilesRead a file into EmacsC-x C-fSave a file back t... 阅读全文
摘要:
`C-' Control-(即 Ctrl-),按住 Ctrl 键再按其他键
`M-' Meta-(或 Alt-),按住 Alt 键再按其他键;或按一下 ESC,再按其他键
`C-M-' Control-Alt-,按住 Ctrl 和 Alt 两个键再按其他键
point 位点。文档中的一个位置,一般是光标的左下角
mark 标记。由命令设置,用来定义/保存文档中的位置信息
region 区域。在 mark 和 point 之间部分,称为一个 region
RET 回车键
TAB 制表符键
ESC ESC 键
SPC 空格键
Backspace, 退格键
Delete 删除键
阅读全文
摘要:
gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
阅读全文
摘要:
D. XPath例程代码#include <libxml/parser.h> #include <libxml/xpath.h> xmlDocPtr getdoc (char *docname) { xmlDocPtr doc; doc = xmlParseFile(docname); if (doc == NULL ) { fprintf(stderr,"Docu... 阅读全文
摘要:
写属性类似于给一个新元素写文本。在这个例子中,我们将添加一个reference结点URI属性到我们的文档中。完整代码:附录F,添加属性例程代码。 reference是story元素的一个子结点,所以找到并插入新元素及其属性是简单的。一旦我们在parseDoc进行了错误检查,我们将在正确的位置加放我们的新元素。但进行之前我们需要定义一个此前我们不见过的数据类型。
阅读全文
摘要:
Libxml 是一个实现读、创建及操纵XML数据功能的C语言库。这个指南提供例子代码并给出它基本功能的解释。在这个项目的主页上有Libxml及更多关于它可用的资料。包含有完整的API文档。这个指南并不能替代这些完整的文档,但是阐明功能需要使用库来完成基本操作。
阅读全文
摘要:
GNU binutils是一组二进制工具集。包括:addr2line ar gprof nm objcopy objdump ranlib size strings strip. 本文归纳他们的常用法。
阅读全文
摘要:
编程设计
设计流程
C++ 的设计原则
对象关系
重用设计
设计易于使用的接口
设计通用的接口
协调一般性和通用性
代码注释
编写代码
精通类和对象
C++ 中的继承机制
覆盖方法的特殊情况
利用模板编写通用代码
C++ 中的一些疑难问题
C++ 中的 I/O 操作
C++ 中的异常 阅读全文