从表面上看,错误消息意味着在文件的第 95 行../Indication.c
(可能与您讨论的文件名称相同,也可能不同indication.c
),有一个静态声明,menu_boot
例如:
static unsigned char menu_boot(unsigned char index, unsigned char *menu1);
或它的静态定义,例如:
static unsigned char menu_boot(unsigned char index, unsigned char *menu1)
{
...
}
考虑文件中的以下代码xx.c
:
extern unsigned char function(int abc);
static unsigned char function(int abc);
static unsigned char function(int abc)
{
return abc & 0xFF;
}
使用 GCC 4.1.2(在 RHEL 5 上)编译时,编译器会说:
$ gcc -c xx.c
xx.c:3: error: static declaration of ‘function’ follows non-static declaration
xx.c:1: error: previous declaration of ‘function’ was here
$
如果我注释掉第三行,那么编译器会说:
$ gcc -c xx.c
xx.c:6: error: static declaration of ‘function’ follows non-static declaration
xx.c:1: error: previous declaration of ‘function’ was here
$
该消息是相同的,但包含有关先前声明所在位置的信息。在这种情况下,它在同一个源文件中;如果声明位于翻译单元中包含的不同源文件(通常是标题)中,则它将标识该其他文件。