在TC里怎么写*.h文件啊?

时间:2022-05-11 20:07:00
这个问题困扰我好久了。
书上说*.h与同名的*.c文件有关系?具体是怎么回事?
比如我在*.h中声名了一个函数原形,怎么在*.c中实现它啊?

21 个解决方案

#1


晕!

#2


改文件名呀~
×。h改成×。c

#3


安c 的规则写既可以,然后保存为*.H
应用时包含。

#4


再晕!

#5


H是头文件啊,只要存成H后缀名的就可以了.

#6


我也晕!

#7


你必须把.h和.c添加到同一个项目里才行

#8


#include <*.h>  , #include <*.c>  都一样 

#9


比如,下面是mouse.h的原形
#include "dos.h"
/*Mouse Class*/
enum mouse
{NOKEY_MOUSE,
LEFT_MOUSE,
RIGHT_MOUSE,
BOTH_MOUSE,
MIDDLE_MOUSE
};
union REGS reg;

/*Test mouse install*/

int MouseSet()
{
reg.x.ax=0;
int86(0x33,&reg,&reg);
if(reg.x.ax==0)
return (0);  /*no mouse.*/
else
return(1);/*mouse has installed.*/
}

在主函数中,
#include "mouse.h"
main()
{
 if(!MouseSet())
   {
    printf("没安装鼠标驱动程序\n");
     exit(0);
   }
 else
   printf("mouse driver has installed\n");
}

#10


/*Mouse Class*/
enum mouse
{NOKEY_MOUSE,
LEFT_MOUSE,
RIGHT_MOUSE,
BOTH_MOUSE,
MIDDLE_MOUSE
};
不要

#11


我不想在*.h写函数实现,我的意思能不能在*.h中只写声明。
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint

#12


当然可以

#13


我不想在*.h写函数实现,我的意思能不能在*.h中只写声明。
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint

当然可以
 
--------------------------------------------------------------------------------


 

#14


#include <filename.h>
void main()
{
    //
    //FILENAME。H文档里的函数
    //
}

#15


楼上的还是误会我的意思了,看看TC的*.h里面只有函数声明,可是函数都写在哪里?怎么实现类似的功能?

#16


TC的*.h里面只有函数声明,可是函数都写在哪里?
编译只需要声明就够了,连接时才寻找实现。TC中库函数的实现是放在.lib和.obj文件中的,连接器知道去什么地方找这些文件。
至于你说的aaa.h, aaa.c , bbb.c的例子,应该在bbb.c中声明faint(可以通过包含aaa.h来实现),然后还要在连接的时候指明aaa.obj(如果你把aaa.c或者aaa.obj放到bbb.c所在的工程文件中,IDE会自动帮你指明,如果是TC2就只能手工来)

#17


你的问题其实实验一下就可以了
你不用写自己的.h文件
只要写好.c文件
可以通过工具生成,h文件
实在不行你写好.c文件,把函数名以及数据定义抄出来存为一个.h文件就可以了
不过还是建议用工具生成

#18


我试试,成功后来给大家加分

#19


记得给我点 :-)

#20


你到晕了又晕的,怎么发饷时精神了?

#21


保存为*.h就可以拉

#1


晕!

#2


改文件名呀~
×。h改成×。c

#3


安c 的规则写既可以,然后保存为*.H
应用时包含。

#4


再晕!

#5


H是头文件啊,只要存成H后缀名的就可以了.

#6


我也晕!

#7


你必须把.h和.c添加到同一个项目里才行

#8


#include <*.h>  , #include <*.c>  都一样 

#9


比如,下面是mouse.h的原形
#include "dos.h"
/*Mouse Class*/
enum mouse
{NOKEY_MOUSE,
LEFT_MOUSE,
RIGHT_MOUSE,
BOTH_MOUSE,
MIDDLE_MOUSE
};
union REGS reg;

/*Test mouse install*/

int MouseSet()
{
reg.x.ax=0;
int86(0x33,&reg,&reg);
if(reg.x.ax==0)
return (0);  /*no mouse.*/
else
return(1);/*mouse has installed.*/
}

在主函数中,
#include "mouse.h"
main()
{
 if(!MouseSet())
   {
    printf("没安装鼠标驱动程序\n");
     exit(0);
   }
 else
   printf("mouse driver has installed\n");
}

#10


/*Mouse Class*/
enum mouse
{NOKEY_MOUSE,
LEFT_MOUSE,
RIGHT_MOUSE,
BOTH_MOUSE,
MIDDLE_MOUSE
};
不要

#11


我不想在*.h写函数实现,我的意思能不能在*.h中只写声明。
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint

#12


当然可以

#13


我不想在*.h写函数实现,我的意思能不能在*.h中只写声明。
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint

当然可以
 
--------------------------------------------------------------------------------


 

#14


#include <filename.h>
void main()
{
    //
    //FILENAME。H文档里的函数
    //
}

#15


楼上的还是误会我的意思了,看看TC的*.h里面只有函数声明,可是函数都写在哪里?怎么实现类似的功能?

#16


TC的*.h里面只有函数声明,可是函数都写在哪里?
编译只需要声明就够了,连接时才寻找实现。TC中库函数的实现是放在.lib和.obj文件中的,连接器知道去什么地方找这些文件。
至于你说的aaa.h, aaa.c , bbb.c的例子,应该在bbb.c中声明faint(可以通过包含aaa.h来实现),然后还要在连接的时候指明aaa.obj(如果你把aaa.c或者aaa.obj放到bbb.c所在的工程文件中,IDE会自动帮你指明,如果是TC2就只能手工来)

#17


你的问题其实实验一下就可以了
你不用写自己的.h文件
只要写好.c文件
可以通过工具生成,h文件
实在不行你写好.c文件,把函数名以及数据定义抄出来存为一个.h文件就可以了
不过还是建议用工具生成

#18


我试试,成功后来给大家加分

#19


记得给我点 :-)

#20


你到晕了又晕的,怎么发饷时精神了?

#21


保存为*.h就可以拉