入门级linux下C++的多文件编译 ...

        以前都是在windows下学C++,最近转到Linux下学习。留一下自己在学习过程中解决困难的笔记。

        在Linux下,如果定义了多个头文件(.h),且里面的方法或函数都上在另外的文件(.cpp)中实现的。当你在另一个包含有主函数的文件(.cpp)中调用这些方法后,在编译的时候,不能像在windows下,只编译包含有主函数的文件(其实是windows中的IDE自己把其它文件也编译了),而是要编译每个.cpp文件。你可以分开编译每个.cpp文件,也可以整个一直编译。 

 如:

//x.h
{
     void P();
}


//x.cpp
#include"x.h"
{ 
    void P()
      {
          cout<<"C++"<<endl;
      }
}

//main.cpp
#include"x.h"
int main()
{
     P();
     return 0;
}


编译:

1.分开编译  g++ x.cpp

                      g++  -o main main.cpp

编译完成之后就会生成一个main的可执行文件

2.一起编译  g++ -o main x.cpp main.cpp

编译完成之后就会生成一个main的可执行文件



再举个例子:

        下面在cylindircal.h中定义了一个圆柱体积类,成员变量有半径和高;方法有设置半径和高,返回半径,高和体积。在cylindircal.cpp中分别实现了所有的方法,且在main.cpp对其进行了调用。

/*************************************************************************
	> File Name: cylindircal.h
	> Author: Tolic 
	> Mail: mr_king1994@163.com
	> Created Time: Fri 08 May 2015 09:18:09 CST
 ************************************************************************/
//cylindircal.h
#include<iostream>
#ifndef _CYLINDIRCAL_H
#define _CYLINDIRCAL_H
const double PI=3.14;
class cylindircal
{
    private:
    double radius;
    double height;
    public:
    cylindircal();
    ~cylindircal();
    void setRadius(double r);
    void setHeight(double h);
    double getRadius();
    double getHeight();
    double getVolume(); 
};
#endif

/*************************************************************************
	> File Name: cylindircal.cpp
	> Author: Tolic 
	> Mail: mr_king1994@163.com
	> Created Time: Fri 08 May 2015 09:29:16 CST
 ************************************************************************/
//cylindircal.cpp
#include<iostream>
#include"cylindircal.h"
using namespace std;
cylindircal::cylindircal()
{
    this->radius=0.0;
    this->height=0.0;
}
cylindircal::~cylindircal()
{}
void cylindircal::setRadius(double r)
{
    this->radius=r;
}
void cylindircal::setHeight(double h)
{
    this->height=h;
}
double cylindircal::getRadius()
{
    return this->radius;
}
double cylindircal::getHeight()
{
    return this->height;
}
double cylindircal::getVolume()
{
    return this->radius*this->radius*PI*this->height;
}


/*************************************************************************
	> File Name: main.cpp
	> Author: Tolic 
	> Mail: mr_king1994@163.com
	> Created Time: Fri 08 May 2015 09:35:11 CST
 ************************************************************************/

#include<iostream>
#include"cylindircal.h"
using namespace std;
int main()
{
    double temp;
    cin>>temp;
    cylindircal cy;
    cy.setRadius(temp);
    cin>>temp;
    cy.setHeight(temp);
    cout<<"Radius="<<cy.getRadius()<<","<<"Height"<<cy.getHeight()<<endl;
    cout<<"Volume="<<cy.getVolume();
    return 0;
}



转载于:https://www.cnblogs.com/tolic/p/7142269.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值