Visual C++6里创建源文件和头文件有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual C++6里创建源文件和头文件有啥区别相关的知识,希望对你有一定的参考价值。

本人刚学 ,

头文件和源文件在功能上,用法上,有很大不同

头文件最大的特点就是,各种程序都可以包含它,可以起到代码的重用,提高效率,使得要写很多代码的程序直接用饱含头文件的方法就能实现。

头文件可以想象成代码的等价替换,就像宏一样,如:
//在my.h
int i;
------
//在my.cpp
#include my.h
main()...
这样编译后,就可以看成
//
int i;
main()...

另外,头文件不能有入口函数,比如main winmain。

一般在头文件中常做一些宏定义,类型定义,相关声明等,像代码实现,全局变量定义,入口函数等都会在cpp文件中。

比如:
//in file my.h
typedef int BOOL //类型定义
#define TRUE 1 //宏定义
#define FALSE 0 //宏定义
typedef struct Student
char* name;
int age;
Student,* pStudent;//结构体定义
class Teacher

public:
char* name;
public:
vitual Display();//只声明有这个函数,却不实现它,它的实现在cpp中
//类定义
参考技术A 头文件跟源文件一样,里面可以有任何C / C++语句, 包括你把main函数写在里面也没什么原则问题。

源文件和头文件的差别就是, 源文件的扩展名是 .c或 .cpp , 编译器只认可这个扩展名的文件作为一个“编译单元”。 而头文件不是这个扩展名(这只是vc的现实情况,你不可以在工程里加一个叫xx.c的文件作为头文件), 所以编译器当它本身不存在, 你必须在某个源文件中用 #include 包含它才行。
参考技术B 头文件是定义:
如:
/***********************************************************************
功能:判断时间是不合法
参数:hour 时
minute 分
second 秒
返回:true 正确
false 错误
***********************************************************************/
BOOL Istime(int hour,int minute,int second);
CString m_errormessage;
源文件是实现:
如:

BOOL CDateTime::Istime(int hour,int minute,int second)


if (hour<0||hour>=24)

m_errormessage=L"小时不合法";
return FALSE;

if (minute<0||minute>=60)

m_errormessage=L"分钟不合法";
return FALSE;

if (second<0||second>=60)

m_errormessage=L"秒不合法";
return FALSE;

return TRUE;
本回答被提问者采纳
参考技术C 创建方式没什么区别。
两者用途不一样而已,一个声明,一个定义。
而且两者一般成对出现。就是说如果有A.h,就应该有A.cpp
参考技术D 刚学的话用源文件就行了。
一般对一个类来说头文件里包括类的成员和函数的声明,源文件里面包括函数的具体部分

.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)

【中文标题】.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)【英文标题】:What is the difference between .LIB and .OBJ files? (Visual Studio C++).LIB 和 .OBJ 文件有什么区别? (Visual Studio C++) 【发布时间】:2010-11-24 13:37:50 【问题描述】:

我知道 .OBJ 是编译一个编译单元的结果,.LIB 是一个静态库,可以从几个 .OBJ 创建,但这种区别似乎只在编译单元的数量上。还有其他区别吗?是相同还是不同的文件格式?

当我想知道在两个(或更多).LIB 中定义的相同静态变量是否在链接到最终可执行文件期间被合并时,我遇到了这个问题。对于 .OBJ,变量被合并。但在 .LIB 中是否也一样?

【问题讨论】:

【参考方案1】:

.LIB 文件是与索引连接在一起的 .OBJ 文件的集合。链接器的处理方式也应该没有区别。

【讨论】:

【参考方案2】:

看起来 .lib 文件就像 .obj 文件的集合。有些人还把将几个 .obj 文件转换为 .lib 文件的过程称为存档。在这种情况下,.lib 文件是一盒 .obj 文件,链接器可以平等对待。

【讨论】:

.lib 在 windows 中与.a 在 linux 中相同。

以上是关于Visual C++6里创建源文件和头文件有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 中的头文件、源文件和资源文件都是啥?有啥区别??

.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)

头文件和源文件有啥区别呢?

Visual Studio如何创建 C语言的工程

Visual C++和Visual Studio有啥区别,大学生用哪个比较好?

VC 6.0中添加库文件和头文件