傻宝宝论坛:头文件和cpp文件

本文详细解释了C++编程中头文件和include函数的作用,通过实例展示了如何使用函数声明与实现,以及引入头文件和include机制解决不同工程间函数复用的问题。重点介绍了将声明写在头文件中,实现写在cpp文件中的实践方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     一个工程往往有头文件和cpp文件。那么什么是头文件,什么是include函数呢,我这里解释一下。

     先看一段代码:    

#include<iostream>
using namespace std;

void main()
{
	printA();
	printB();
}

void printA()
{
	print('A');
}

void printB()
{
	print('B');
}

void print(char x)
{
	cout<<"this is "<<x<<endl;
}

     这段代码编译是无法通过的,因为编译器找不到printA,printB,pirnt函数。所以我们需要引入大名鼎鼎的函数声明。即在开始的时候声明函数。

#include<iostream>
using namespace std;

/*这是函数声明*/
void printA();
void printB();
void print(char s); 


/*这是函数实现*/

void main()
{
	printA();
	printB();
}

//printA的实现
void printA()
{
	print('A');
}

//printB的实现
void printB()
{
	print('B');
}

//print的实现
void print(char x)
{
	cout<<"this is "<<x<<endl;
}

      此时编译通过。可是很多的时候,我不仅这个main要用到printA,printB,print,而且其他的工程的main2也要用到这些函数,那么怎么办呢?我们自然的引入了头文件和include机制。include的实质是把某个文件追加在include的位置。

       下面这段代码和第2段代码是一模一样的。注意,我说的是一模一样。

        main文件:       

#include<iostream>
using namespace std;


#include<print.h>
/*这是函数的声明,其实质是将include这句话用以下三句话替换。
  理解!!!!!!!!!!!!!!!!!
void printA();
void printB();
void print(char s); */



/*这是函数实现*/
void main()
{
	printA();
	printB();
}

//printA的实现
void printA()
{
	print('A');
}

//printB的实现
void printB()
{
	print('B');
}

//print的实现
void print(char x)
{
	cout<<"this is "<<x<<endl;
}

         print.h文件是:     

void printA();
void printB();
void print(char s);

        这样,你就明白了include只是将头文件进行了替代,这和所谓的宏和内联函数是一样的。他只是进行了一下替代工作而已。

那么我们一般将不同的实现部分相分离,这样上面的完整代码应该是:

       print.h 

void printA();
void printB();
void print(char s);

        main.cpp      

#include<print.h>

/*这是函数实现*/
void main()
{
	printA();
	printB();
}

        print.cpp: 

#include<iostream>
using namespace std;
#include<print.h>

//printA的实现
void printA()
{
	print('A');
}

//printB的实现
void printB()
{
	print('B');
}

//print的实现
void print(char x)
{
	cout<<"this is "<<x<<endl;
}

       注意:print.cc和main.cc都用到了这些函数声明,所以都要嵌入.h,而main没有用到iostream中的cout,所以不需要嵌入iostream,而print用到了,所以需要嵌入。

先写到这。其实这就是所谓的实现和声明相分离,在同一个工程下,编译器首先只要有了声明就会留好入口,而连接的时候才去找实现。好了,先写到这里。永远记得,

将声明写在头文件中,将实现写在cpp中,替换嵌入的只能是h文件。#include <x.cpp>是将两个实现文件又搞在一起了,不仅没必要,而且很傻。




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值