没有声明的函数为啥可以调用

没有声明的函数为什么可以调用?
我在文件 A.c 中定义了一个函数:

int fun(void)
{
        return  WM_GetDialogItem( g_hWin , ID_EDIT_0);
} //其中 g_hWin 是整个工程的全局,ID_EDIT_0是A.c中的全局


然后 fun 这个函数没有声明过,但是我在 B.c 中调用的时候,直接就可以调用,为什么?
------解决思路----------------------
怎么还在讨论,还没有结帖啊??
既然如此,朕再来说几句。
早期的编译器允许这种做法,再现在的C标准要求函数使用前必须先声明,但看在那些业已存在的大量程序的面子上,有很多编译器直到现在还容许这种做法。
没有声明的函数为啥可以调用