编写单片机头文件问题求高手解答

如果想把一个经常用到的延时函数编写成头文件时,按照模块化编程的方法应该是这样的:
1)编写.c文件,delayms.c
#include "delayms.h"

void delayms(unsigned int k)
{
unsigned int a,b;
for(a=0;a<k;a++){
for(b=0;b<50;b++)
{;}}
}
2)编写.h文件, delayms.h
#ifndef __DELAYMS_H__
#define __DELAYMS_H__
void delayms(unsigned int k);
#endif
使用时将.c文件加入用到的工程里,将.h文件放在工程所在的文件夹中;
问题??
如果不要写.c文件,而这样编写delayms.h文件:

#ifndef __DELAYMS_H__
#define __DELAYMS_H__
void delayms(unsigned int k)

{
unsigned int a,b;
for(a=0;a<k;a++){
for(b=0;b<50;b++)
{;}}
}
#endif

再将delayms.h存入keil的相应库文件夹里,随时在不同的工程里调用,会出现问题吗。

程序块不要放在头文件中。
等你将来搞结构化编程时,面对几十几百个头文件和功能模块文件时,你就会明白的。追问

问题的初衷是这样的,对于18B20的读写程序,I2C的时序程序,LCD1602的操作程序,等等,每次做新的工程时都要复制粘贴到工程里觉得很麻烦,于是萌生了这样的想法,编译也能通过,只是不懂有什么弊病,希望指点。

追答

你完全可以按照前一种方法做啊,甚或封装成自己的库也可以。
一股脑扔进头文件里是不可行的;做点小例子小程序是没什么问题,等你将来搞大项目或者跟人合作的时候,这些烂习惯会折腾掉你不少时间的。

追问

谢谢回复,尽管作为单片机娱乐者,将来也不太可能搞”大项目“,但觉得你的回复如同教科书般的标准,所以确认了,也同时感谢其他朋友的回复。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-01
可以!但是这个头文件只能被一个源文件包含,若想在多个源文件中使用该函数,在其他源文件中声明extern void dealy(int ); 即可!!知道原理就行。。。随便你~!
第2个回答  2013-04-01
可以!甚至你可以直接 #include“delayms.c” 都是可以的 。但是请尽量避免使用延时函数
相似回答