C++编译运行多个文件形式的程序

一. 头文件和源文件的区别:

  1. 从技术层面上来说,.h文件 .c文件.cpp文件没什么区别,里面放的都是C++的源代码。

  2. 但从开发习惯来说,大家都遵循一个标准,那就是.h文件放声明,.cpp文件放定义(实现)。通常类声明.h文件与.cpp文件同名:如Chain.h和Chain.cpp。

  3. 一般来说,头文件提供接口,源文件提供实现。但是有些实现比较简单的,也可以直接写在头文件里,这样头文件接口实现一起提供。

  4. 在编译时,源文件里的实现会被编译成临时文件,运行时刻程序找到头文件里的接口,根据接口找到这些临时文件,来调用它们这些实现。

二. 如何实现编译运行多个文件:

  1. 新建工程,然后添加.h头文件和.Cpp源文件到工程中,其中一个cpp文件包含主函数,编译工程时编译器就会编译所有的源文件。

  2. 一个文件A使用另外一个文件B的类或者函数的时候就可以#include “B.cpp”

三.C++里包含头文件的时候用<>和“”的区别:

编译器搜索头文件的顺序不一样:
  ①使用 " " 是搜索所有目录: 表示从当前目录开始,搜索,然后是系统目录和PATH环境变量所列出的目录。
  ②使用<>是不搜索当前目录:表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录。
  正常情况下,自行定义的头文件应该用 " " ,因为这些文件放在工程目录(也就是编译器的当前目录)下,而不是放在公共头文件目录下,如果用<>,那么就会找不到头文件。
  而系统提供的头文件,比如库函数的头文件,可以用<>,也可以用 " " 。

所以,系统提供的头文件一般用<>,用户自己定义的则使用""。

四、多文件项目案例

Project
  --- Sources
  ------ coordin.cpp
  ------ main.cpp
  --- Headers
  ------ coordin.h

mian.cpp

#include <iostream>
#include "coordin.h"
using namespace std;
int main()
{
    rect rplace;                    //直角坐标
    polar pplace;                   //极坐标

    cout << "Please Enter the x and y values: " << endl;
    while(cin >> rplace.x >> rplace.y)          //输入直角坐标
    {
        pplace = rect_to_polar(rplace);         //将直角坐标转化为极坐标
        show_polar(pplace);
        cout << "Next two numbers (q to quit): " << endl;
    }
    cout << "Bye." << endl;
    return 0;
}

coordin.h内容如下:

#ifndef COORDIN_H_INCLUDED
#define COORDIN_H_INCLUDED
struct polar
{
    double distance;
    double angle;
};
struct rect
{
    double x;
    double y;
};
polar rect_to_polar(rect xypos);
void show_polar(polar dapos);
#endif // COORDIN_H_INCLUDED

coordin.cpp内容如下:

#include <iostream>
#include <cmath>
#include "coordin.h"
using namespace std;
polar rect_to_polar(rect xypos)
{

    polar answer;

    answer.distance = sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);
    return answer;
}
void show_polar(polar dapos)
{
    const double Rad_to_deg = 57.29577951;

    cout << "distance = " << dapos.distance;
    cout << ", angle = " << dapos.angle * Rad_to_deg;
    cout << "  degrees\n";
}

coordin.h中的声明和coordin.cpp函数实现会自动进行对应的链接,这是C++自身的属性功能,.h文件中函数声明,会自动触发编译器进行同名.cpp中对应函数实现的检索,如果没检索,则会报错提示没有具体实现。

转载来源

https://www.cnblogs.com/scrazy/articles/7860277.html
https://www.jianshu.com/p/bd4b563c2c77

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值