浙江个人网站备案,大型网络游戏排行榜前十名,海关做预归类的网站,如何更快的让百度收录网站编译和链接
一、源代码的组织
头文件#xff08;.h#xff09;#xff1a;#include头文件、函数的声明、结构体的声明、类的声明、模板的声明、内联函数、#define和const定义的常量等。 源文件#xff08;.cpp#xff09;#xff1a;函数的定义、类的定义、模板具体化的…编译和链接
一、源代码的组织
头文件.h#include头文件、函数的声明、结构体的声明、类的声明、模板的声明、内联函数、#define和const定义的常量等。 源文件.cpp函数的定义、类的定义、模板具体化的定义。 主程序main函数所在的程序主程序负责实现框架和核心流程把需要用到的头文件用#include包含进来。 二、编译预处理
预处理的包括以下方面 1处理#include头文件包含指令。 2处理#ifdef #else #endif、#ifndef #else #endif条件编译指令。 3处理#define宏定义。 4为代码添加行号、文件名和函数名。 5删除注释。 6保留部分#pragma编译指令编译的时候会用到。 三、编译
将预处理生成的文件经过词法分析、语法分析、语义分析以及优化和汇编后编译成若干个目标文件二进制文件。 四、链接
将编译后的目标文件以及它们所需要的库文件链接在一起形成一个体整。 五、更多细节
1分开编译的好处每次只编译修改过的源文件然后再链接效率最高。
2编译单个*.cpp文件的时候必须要让编译器知道名称的存在否则会出现找不到标识符的错误。直接和间接包含头文件都可以 3编译单个*.cpp文件的时候编译器只需要知道名称的存在不会把它们的定义一起编译。 4如果函数和类的定义不存在编译不会报错但链接会出现无法解析的外部命令。 5链接的时候变量、函数和类的定义只能有一个否则会出现重定义的错误。如果把变量、函数和类的定义放在*.h文件中.h会被多次包含链接前可能存在多个副本如果放在.cpp文件中.cpp文件不会被包含只会被编译一次链接前只存在一个版本 6把变量、函数和类的定义放在.h中是不规范的做法如果*.h被多个*.cpp包含会出现重定义。 7用#include包含*.cpp也是不规范的做法原理同上。 8尽可能不使用全局变量如果一定要用要在*.h文件中声明需要加extern关键字在*.cpp文件中定义。 9全局的const常量在头文件中定义const常量仅在单个文件内有效。 10.h文件重复包含的处理方法只对单个的.cpp文件有效不是整个项目。 11函数模板和类模板的声明和定义可以分开书写但它们的定义并不是真实的定义只能放在*.h文件中函数模板和类模板的具体化版本的代码是真实的定义所以放在*.cpp文件中。 12Linux下C编译和链接的原理与VS一样。