#include<*.cpp>用法问题

所谓 #include 的意思呢,就是把另一个文件里的东西复制到这里来,无论你的文件后缀是 h 还是 cpp 都是一样的。
如果#include了一个cpp,同时又把这个cpp包含到工程,链接时就会出现重定义错误。错误是怎么产生的呢?你可以试试写 a.cpp 和 b.cpp 两个文件,两个文件中有一模一样的两个函数,是不是产生了和你的问题中同样的错误?因为你有两个一模一样的函数,编译器不知道怎么区分它们了。
现在把 a.cpp 中的内容全部去掉,换成 #include "b.cpp",VC在编译的时候,首先将 #include "b.cpp" 替换成了 b.cpp 的内容,于是就和刚才的情形一致了。这时再进行编译,当然就会出一样的错误了。

那么 .h 文件为什么没有类似的问题呢?

一是 .h 文件并没有定义,都是一些声明,声明可以重复多次(你只是在告诉编译器,工程中有这么个东西,具体在哪,请到别处找找),而定义不行。二是 VC 并不会编译 .h 文件,如果你把项目中的 .h 文件全部移除(不是删除!),程序照样可以编译。

如果你要调用另一个 .cpp 文件中的函数,只要在使用它的文件中声明一下就可以了。比如:"int Foo( int a, int b );"(注意没有函数体) 这个声明告诉编译器你要一个名叫 Foo, 接受两个整型参数,返回整型的函数,编译器自动会帮你去找。只要项目中任一个 .cpp 文件定义了这样一个函数,编译器就可以找到。

现在,假设你有很多个函数,并且有很多个 .cpp 文件要用到它们,那么,岂不是需要在每个文件中写上一大堆的声明?这便是 #include 的用武之地了。在一个 .h 文件写上所有的声明,然后在每个 .cpp 文件中 #include 它,于是编译器就会把 #include "xx.h" 替换成 xx.h 文件中的实际内容,于是你的每个 .cpp 文件中都有这些声明了,都可以自由地使用这些函数了。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值