书上说*.h与同名的*.c文件有关系?具体是怎么回事?
比如我在*.h中声名了一个函数原形,怎么在*.c中实现它啊?
21 个解决方案
#1
晕!
#2
改文件名呀~
×。h改成×。c
×。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,®,®);
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");
}
#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,®,®);
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
};
不要
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
好比我写了一个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
当然可以
--------------------------------------------------------------------------------
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint
当然可以
--------------------------------------------------------------------------------
#14
#include <filename.h>
void main()
{
//
//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就只能手工来)
编译只需要声明就够了,连接时才寻找实现。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文件就可以了
不过还是建议用工具生成
你不用写自己的.h文件
只要写好.c文件
可以通过工具生成,h文件
实在不行你写好.c文件,把函数名以及数据定义抄出来存为一个.h文件就可以了
不过还是建议用工具生成
#18
我试试,成功后来给大家加分
#19
记得给我点 :-)
#20
你到晕了又晕的,怎么发饷时精神了?
#21
保存为*.h就可以拉
#1
晕!
#2
改文件名呀~
×。h改成×。c
×。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,®,®);
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");
}
#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,®,®);
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
};
不要
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
好比我写了一个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
当然可以
--------------------------------------------------------------------------------
好比我写了一个aaa.h,里面有函数声明void faint(void);
我想在aaa.c里实现faint,然后在bbb.c中#include "aaa.h"后就可以用faint
当然可以
--------------------------------------------------------------------------------
#14
#include <filename.h>
void main()
{
//
//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就只能手工来)
编译只需要声明就够了,连接时才寻找实现。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文件就可以了
不过还是建议用工具生成
你不用写自己的.h文件
只要写好.c文件
可以通过工具生成,h文件
实在不行你写好.c文件,把函数名以及数据定义抄出来存为一个.h文件就可以了
不过还是建议用工具生成
#18
我试试,成功后来给大家加分
#19
记得给我点 :-)
#20
你到晕了又晕的,怎么发饷时精神了?
#21
保存为*.h就可以拉