关于c++源文件与头文件的编译规则总结
C++语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。
.cpp文件被称作C++源文件,里面放的都是C++的源代码
.h文件则被称作C++头文件,里面放的也是C++的源代码,头文件不用被编译
(1)现在我来实验一下,首先创建一个头文件h1,头文件里定义了两个函数
int f2(int);
int f3(int, int);
再创建一个源文件y1,声明这两个函数
#include"h1.h"
int f2(int a)
{//do something here...return a + a;
}
int f3(int a, int b) {return a + b;
}
再创建一个主函数main
#include"h1.h"
#include <iostream>
using namespace std;int main()
{int number2 = f2(3);int number3 = f3(1, 2);cout << "f2:" << "结果如下\n";cout << number2;cout << " \n";cout << "f3:" << "结果如下\n";cout << number3;return 0;
}
结果
一个符号,在整个程序中可以被声明多次,但却要且仅要被定义一次。
为了验证,我们创建一个头文件h2,内容和h1一样。
int f2(int);
int f3(int, int);
编译,此时并没有报错
再创建一个源文件y2,来定义h2的内容
#include"h2.h"
int f3(int a, int b) {return a + b;
}
int f2(int a)
{//do something here...return a + a;
}
编译,报错了
显示重复定义错误
(2)在头文件声明一个类
在h2头文件声明一个类A
class A {public:A();A(int , int);void print();int f4();
private:int a;int b;};
在y2源文件中定义这个类
#include"h2.h"
#include <iostream>
using namespace std;
A::A() {a = 8;b = 9;
}
A::A(int n1 , int n2) {a = n1;b = n2;
}
void A::print() {cout << "我是老A\n";
}
int A::f4() {return a + b;
}
在main函数中调用
#include"h1.h"
#include"h2.h"
#include <iostream>
using namespace std;int main()
{int number2 = f2(3);int number3 = f3(1, 2);A a;cout << "f2:" << "结果如下\n";cout << number2;cout << " \n";cout << "f3:" << "结果如下\n";cout << number3<<"\n";a.print();cout << "f4:" << "结果如下\n";int number4 = a.f4();cout << number4 << "\n";return 0;
}
结果:
(3)源文件的关联
创建一个头文件h3
class A f5();
再创建一个源文件y3
#include"h2.h"
#include"h3.h"
#include <iostream>
using namespace std;A f5() {A a = A(6, 6);return a;
}
在main函数中调用
#include"h1.h"
#include"h2.h"
#include"h3.h"
#include <iostream>
using namespace std;int main()
{int number2 = f2(3);int number3 = f3(1, 2);A a;cout << "f2:" << "结果如下\n";cout << number2;cout << " \n";cout << "f3:" << "结果如下\n";cout << number3<<"\n";a.print();cout << "f4:" << "结果如下\n";int number4 = a.f4();cout << number4 << "\n";A b = f5();b.print();int number5 = b.f4();cout << "f5:" << "结果如下\n";cout << number5 << "\n";return 0;
}
结果:
关于c++源文件与头文件的编译规则总结相关推荐
- 【STM32学习笔记】(5)—— STM32工程添加源文件和头文件
向工程目录里创建头文件和源文件 STM32的工程文件构成较为复杂,同时为STM32工程文件添加源文件和头文件也是较为复杂的,下面就由此文章来介绍怎么给STM32工程添加源文件(.c)与头文件(.h), ...
- 基于F28335的Simulink代码生成(四)——如何链接可以访问底层文件的外部源文件和头文件
基于F28335的Simulink代码生成系列文章目录 基于F28335的Simulink代码生成(一)--搞懂模型的运行逻辑 基于F28335的Simulink代码生成(二)--EPWM模块同步设置 ...
- C++中头文件的命名规则
C++中头文件的命名规则,因为C++是从C语言发展而来的,为了与C兼容,C++保留了C语言中的一些规定,其中就包括用.h作为后缀的头文件,比如大家所熟悉的:stdio.h.math.h和string. ...
- mp4文件时长 c++源码_【C语言】如何使用头文件 .h 编译 C 源码!so easy!
在 C 语言中,头文件或包含文件通常是一个源代码文件,程序员使用编译器指令将头文件包含进其他源文件的开始(或头部),由编译器在处理另一个源文件时自动包含进来. 一个头文件一般包含类.子程序.变量和其他 ...
- C++源文件 include头文件
C++源文件从文本到可执行文件经历的过程? 对于C++源文件,从文本到可执行文件一般需要四个过程: 预处理阶段:对源代码文件中文件包含关系(头文件).预编译语句(宏定义)进行分析和替换,生成预编译文件 ...
- 类型重定义 头文件预编译设置
这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次.在编写头文件的时候,如果没有加上这一句,编译器可能会编译多次这个头文件.VS编译器会报出这个头文件 里 ...
- QT:创建一个widget,包含源文件,头文件,以及ui文件
1. 安装QT 2. 在QT Welcome画面,点击 New Project 3. 选择Application--Qt Widgets Application 4. 按提示创建即可 文件目录如下: ...
- linux头文件怎么编译,microsoft编译器怎么使用Linux头文件
microsoft编译器如何使用Linux头文件? #include #include #include #include #include #include #include #include #i ...
- 创建QT项目时只有.pro文件,源文件和头文件
[问题描述] [原因分析] 问题原因:新建工程时没有选择合适的构建套件 [解决方案] 1新建文件 2.选择kits 下面这一步可以根据自己的需要选择相关的Kits 3.此时生成的文件还只有一个.pro ...
最新文章
- 阿里再开源!基于JAVA的模块化开发框架JarsLink
- P7717-「EZEC-10」序列【Trie】
- Discuz! 全局变量 $_G
- css3实现带有简单动画按钮导航
- 学习hadoop需要具备基础知识
- 华师大数据科学考研_华东师范大学数据科学与工程需要复习哪些内容?
- 珠海 第十届亚洲机器人锦标赛_滨和中学“VEX”团队斩获粤港澳机器人大赛多个大奖!...
- Centos允许root远程登录设置
- 标准C++ 与 VC++ 区别集锦(待续)
- 【Python】ID3算法的实现
- CodeForces - 1040B Shashlik Cooking(水题)
- 加拿大计算机专业前八大学,加拿大留学:计算机工程专业排名前八的名校详情...
- 玩寻仙一个月之我感受
- 紫罗兰永恒花园女性CG模型作品
- Win10联想电脑连不上wifi解决方法
- 小白学习MySQL - 聊聊数据备份的重要性
- app 服务器维护通知,启用 App Store 服务器通知
- 工程结算款支付比例_工程进度款的支付比例及付款实例分析
- think-queue
- Nexus环境安装部署及使用
热门文章
- MAC升级Ruby版本
- Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片
- windows10mac地址更改方法
- 阿里平头哥数字IC验证笔试题
- 我读 《异类》 - 马尔科姆 · 格拉德维尔 / 不一样的成功启示录
- 计算机主板上实时时钟晶振频率为,电脑主板晶振的识别及测量方法介绍
- 获取微信公众号openID,code
- 老子《道德经》第三十二章
- 【批处理DOS-CMD命令-汇总和小结】-切换工作目录,切换当前目录,进入指定文件夹(cd和chdir、pushd和popd)
- uniapp隐藏页面顶部导航栏和手机系统顶部导航栏