工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 4327|回复: 8

.h和.cpp的区别?

[复制链接]
发表于 2007-1-18 16:44 | 显示全部楼层 |阅读模式
今天某人碰到个奇怪的问题,分别在同一个目录下建立x.cpp和x.h文件,
并在两个文件中写同样的函数。
然后建立一个多文件程序,三个文件名分别为1、2、main,在main中
分别include x.h和x.cpp,出现了一个令我想不明白的问题,如下:
1.在main中include x.h,然后在1、2文件中调用x.h中的函数,编译通过;
2.在main中去掉#include".\include\x.h",改为#include".\include\x.cpp",
在1、2文件中调用里面的函数,提示该函数未定义。

疑问:include .h和include .cpp究竟有什么不同?
发表于 2007-1-18 17:00 | 显示全部楼层
改成  hpp看看...
回复

使用道具 举报

 楼主| 发表于 2007-1-18 17:14 | 显示全部楼层
只是想知道include .h和include .cpp究竟有什么不同......
回复

使用道具 举报

发表于 2007-1-18 17:33 | 显示全部楼层
CPP 不是头文件,不可以包含来加进去

如果我没
对于 #include <xx.xx> 内的文件,编译器是采取不同于C , CPP文件的编译方法的
回复

使用道具 举报

发表于 2007-1-18 18:57 | 显示全部楼层
和编程器或者说IDE有关吧?
会Cpp文件生成OBJ。

楼主用什么来编译啊?
回复

使用道具 举报

发表于 2007-1-19 04:07 | 显示全部楼层
要直接把.cpp的东西放引入来用的话应该是用extern 把函数声明一下,但是这样又包含.h的话连接的时候会出现什么问题还不知道,是否有人会去试一下,然后告诉大家...
回复

使用道具 举报

 楼主| 发表于 2007-1-19 09:40 | 显示全部楼层
经过调试,结果如下:
1.同一工程下建立文件f1.h、f2.cpp、f3.cpp、main.cpp;
2.在f1,f2中均写同样的函数f(),f3中写函数ff();
3.首先只把f1,f3包含到main.cpp,在main、f3中分别调用f(),并在main中调用
ff(),编译通过,运行结果正确;
4.只把f2,f3包含到main.cpp,在main、f3中分别调用f(),并在main中调用
ff(),提示f3中f()函数未定义;
这时,如果把f3设置为“组建时排除”,则出现main中f()函数重复定义;
如果f2设置为“组建时排除”,则出现f3中f()函数未定义;
如果把f2、f3分别编译,再把两个都设置为组建时排除,则编译通过,运行正确。

[ 本帖最后由 gyCai 于 2007-1-19 09:56 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-1-19 09:59 | 显示全部楼层
to jinry:
尝试了如下:在文件f2中定义f();
然后在f3头部用extern,编译说重复定义。
回复

使用道具 举报

发表于 2007-1-22 18:50 | 显示全部楼层
谢谢gyCai....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-15 10:19

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表