单片机/MCU论坛
直播中

土老冒

11年用户 92经验值
擅长:可编程逻辑 电源/新能源 测量仪表 控制/MCU
私信 关注
[问答]

C51在主程序中定义的函数在另一个被加载的自己作的.h格式文件里是否可以直接调用?

如题所述编了一个测试用的程序(test.c)
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
........
void delay (uint a)
{
        while (a--);
}
在程序中定义了一个延时用的函数,在加载的文件中有一个数码显示驱动的头文件leddig_drv.h。在这个头文件中也需要用到延时:
                   .................
                        case(7):
                                LSA=0;LSB=0;LSC=0; break;       
                }
                P0=smgduan[Disp_Buffer];
                delay(10);        
                P0=0x00;
        }
}
#endif
我要请教的大侠的问题是:在leddig_drv.h的头文件中是否可以直接调用主文件(test.c)中的delay()函数?如何调用?
直接调用就会出现错误:

LEDDIG_DRV.H(38): warning C206: 'delay': missing function-prototype
LEDDIG_DRV.H(38): error C267: 'delay': requires ANSI-style prototype
DS18B20_TEST.C(20): error C231: 'delay': redefinition
DS18B20_TEST.C(22): error C231: 'delay': redefinition
而我在leddig_drv.h的头部位置声明了一下:
........
***it LSC=P2^4;
void delay(unsigned int a);
void DigDisplay()

........
程序虽然可以通过,但是在h文件里仅仅是一个名称而没有实际的内容,这个声明是否有效?



回帖(1)

hhhuaywhsh

2021-8-26 17:44:22

最佳答案

在要调用的那个文件前面加这个试试             extern void delay (uint a);
举报

更多回帖

×
20
完善资料,
赚取积分