原因:这种情况下很可能是头文件的预定义声明重复了。比如写了两个LED文件,一个是LED1.c,另一个是LED2.c。他们俩都是从LED.c移植过来的,然后头文件忘了修改,里面的预定义都是
#ifndef __LED_H_
#define __LED_H_
........
#endif
这时候如果在在main.c中包含头文件时,先包含了LED1.h,后包含了LED2.h,在头文件预定义防止重复包含的作用下,就会导致LED2.h中的函数和变量声明失效,从而导致上面的警告。同理,如果先包含了LED2h,后包含了LED1.h,就会导致LED1.h的有关函数出现警告。我正是在main.c中切换头文件的包含顺序时发现的这一问题。