美文网首页简友广场C++学习笔记想法
第九章 内存模型和名称空间(1)单独编译

第九章 内存模型和名称空间(1)单独编译

作者: 阿厉a_li | 来源:发表于2019-12-27 16:02 被阅读0次

    (一)单独编译

    1.单独编译的好处

        将程序的各个部分放在不同的文件中,然后每个文件单独编译,编译完成后再利用链接程序将它们链接起来,这样如果有一部分改动之后,只需要单独编译改动的部分然后再次链接就可以了。Unix和linux中使用make程序自动管理编译链接的过程,也就是如果make发现程序源文件有改动,则会重新编译改动的部分,然后再次链接。

    2.头文件中包含的内容:

        结构原型函数声明类声明;使用define或const声明的符号常量模板声明内联函数

        不要将变量的声明和函数的定义放在头文件中,除非是const常量或内联函数。因为如果同一个项目中多个文件包含头文件,将会造成变量多次声明的情况。

    3.头文件的格式

        在包含自己定义的头文件的时候,应该使用引号而不是尖括号,因为引号内的头文件编译器首先在当前工作目录或源代码目录寻找,如果没有找到,则再到标准位置查找。而在尖括号内的头文件,编译器会在存储标准头文件的主机系统的文件系统中查找。头文件用.h结尾。

    4.编译程序

        在linux中,只需要使用g++ file1.cpp file2.cpp编译即可,编译程序会自动合并包含的头文件和源代码文件,然后编译成两个临时文件,并接着生成两个目标代码文件,最后用链接程序将两个目标代码文件,库代码和启动代码合并,生成可执行文件a.out。在IDE中,不要将头文件加入到项目列表中。在同一个文件中,只能将同一个头文件包含一次。用一个指令可以很好地避免重复包含,它是基于预处理编译指令的,我们在头文件中加入下面句子

    #ifndef COORDIN_H_

    #define COORDIN_H_

    ...

    #endif

        意思是如果以前没有使用define声明过COORDIN_H_的话,则执行中间的语句,中间的语句就是函数原型,类声明等等。这句话的作用是如果以前定义过符号COORDIN_H_(这个符号加了很多短杠,保证不会跟别处的重名),说明已经包含了这个头文件了,那么中间的语句就会略过去,从而不会重复声明。这种方法并不能保证不会包含这个头文件多次,但是会让程序忽略除了第一次包含之外的所有内容

    5.不同编译器

        不同编译器编译的源代码程序,由于对代码的修饰不同,可能会造成无法正确链接,因此,如果有程序的源代码的话,要用同一个编译器编译所有的代码

    相关文章

      网友评论

        本文标题:第九章 内存模型和名称空间(1)单独编译

        本文链接:https://www.haomeiwen.com/subject/czmggctx.html