有关C语言函数声明和include的有关问题

有关C语言函数声明和include的问题
我行问大家一下。我建立了一个工程里面包含main.c 和test.h两个文件,test.h里面实现了一个叫func的函数
那么我在main.c里面使用这个函数的时候应该既声明这个函数又包含test.h这个头文件,还是只声明就可以?如果两种都可以的话大家推荐哪一种?
------解决思路----------------------
首先不推荐在头文件实现一个全局函数。因为头文件可能会被很多其他的cpp文件包含,这样造成了编译器和连接器的负担,而且容易和其他cpp文件里面的函数定义起冲突。就你目前所说的情况来说,如果你main.c里面include了.h那么直接用都不需要声明该函数
------解决思路----------------------
正确的做法是.h里面只包含声明,.c里面来定义。
检查一个.h文件是否包含定义的常用手段是同一个.c包含两次来测试。
比如你在main.c里面这样写肯定会有编译错误。
#include "test.h"
#include "test.h"
也许你会说谁会这么无聊包含两次啊。不过这样做主要是保证多个.c文件包含同一个.h的时候不会报错。