04 2012 档案
[转载]C++编译器与链接器工作原理
摘要:[转自:http://blog.csdn.net/success041000/article/details/6714195]1.几个概念 1)编译:把源文件中的源代码翻译成机器语言,保存到目标文件中。如果编译通过,就会把CPP转换成OBJ文件。 2)编译单元:根据C++标准,每一个CPP文件就是一个编译单元。每个编译单元之间是相互独立并且互相不可知。 3)目标文件:编译所生成的文件,以机器码的形式包含了编译单元里所有的代码和数据。 还有一些其他信息,如未解决符号表,导出符号表和地址重定向表等。目标文件是以二进制的形式存在的。 根据C++标准,一个编译单元(Translation Un... 阅读全文
posted @ 2012-04-25 19:23 @且听风吟@ 阅读(281) 评论(0) 推荐(0)
[转载]描述C,C++编译和链接过程
摘要:[转载自http://my.oschina.net/anyway/blog/11262]详解link有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而反对初学者使用IDE)。因 阅读全文
posted @ 2012-04-25 19:15 @且听风吟@ 阅读(273) 评论(0) 推荐(0)
内存分配函数
摘要:malloc函数简介 原型:extern void *malloc(unsigned int num_bytes); 语法:num_bytes为内存块的字节数 头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。 功能:分配长度为num_bytes字节的内存块 返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐 阅读全文
posted @ 2012-04-23 14:15 @且听风吟@ 阅读(357) 评论(0) 推荐(0)
cut用法
摘要:cut用来从标准输入或者文本文件中剪切列或者域。其使用方法为:cut [options] file1 file2其可用的选项有:-c list 指定剪切字符数。-f field 指定剪切域数。-d 指定与空格和t a b键不同的域分隔符。- c用来指定剪切范围,如下所示: - c 1,5-7 剪切第1个字符,然后是第5到第7个字符。 -c1-50 剪切前5 0个字符。-f 格式与- c相同。 -f 1 ,5 剪切 第1域,第5域。 - f 1,10-12 剪切第1域,第1 0域到第1 2域。具体示例如下:cat 1.txthello1 hello11hello2 hello12hell... 阅读全文
posted @ 2012-04-19 16:49 @且听风吟@ 阅读(365) 评论(0) 推荐(0)
paste命令使用
摘要:paste 可以将不同文件的数据放在一行。缺省情况下,paste使用空格或者tab键分隔新行中的不同文件。paste的格式为:paste <-d> <-s> file1 file2选项的含义如下:-d: 制定不同于空格或tab键的域分隔符。比如使用@分隔符,就可以-d@-s: 将每个文件合并成行,而不是按行合并。(即每个文件中的内容占一行。而不是从每个文件取行 合并成新行,具体见下面示例)-:使用标准输入比如两个文件1.txt和2.txt1.txt内容: cat 1.txthello1hello2hello32.txt 内容 cat 2.txtworld1world2w 阅读全文
posted @ 2012-04-19 16:27 @且听风吟@ 阅读(350) 评论(0) 推荐(0)
堆和栈
摘要:一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放5、程序 阅读全文
posted @ 2012-04-17 16:02 @且听风吟@ 阅读(339) 评论(1) 推荐(1)
makefile 学习
摘要:【转载,非常不错的一篇博文,循序渐进,简单易懂】假设我们有下面这样的一个程序,源代码如下:/* main.c */#include <mytool1.h>#include <mytool2.h>int main(int argc,char **argv){mytool1_print("hello");mytool2_print("hello");}/* mytool1.h */#ifndef _MYTOOL_1_H#define _MYTOOL_1_Hvoid mytool1_print(char *print_str);#end 阅读全文
posted @ 2012-04-09 18:08 @且听风吟@ 阅读(272) 评论(0) 推荐(0)