prises à leur valeur nominale, le message d'erreur signifie que la ligne 95 du fichier ../Indication.c
(qui peut ou peut ne pas être le même fichier que le fichier nommé indication.c
que vous discutiez), il y a une déclaration statique pour menu_boot
tels que:
static unsigned char menu_boot(unsigned char index, unsigned char *menu1);
ou une définition statique de celui-ci, par exemple:
static unsigned char menu_boot(unsigned char index, unsigned char *menu1)
{
...
}
Consultez le code suivant dans un fil e xx.c
:
extern unsigned char function(int abc);
static unsigned char function(int abc);
static unsigned char function(int abc)
{
return abc & 0xFF;
}
Lorsque compilé avec GCC 4.1.2 (sur RHEL 5), le compilateur dit:
$ 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
$
Si je commente la ligne de trois, le compilateur dit:
$ 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
$
Le message est le même, mais inclut les informations sur l'emplacement de la déclaration précédente. Dans ce cas, il est dans le même fichier source; Si la déclaration se trouvait dans un fichier source différent (généralement un en-tête) inclus dans l'unité de traduction, il identifierait cet autre fichier.
Est-ce que ce qui est dans votre fichier .c ne devrait pas avoir le '__attribute __ ((section (". Core ")))' après la signature? –
Cela peut vous aider http://stackoverflow.com/questions/3148244/static-declaration-follows-non-static-declaration – Jeyaram
Êtes-vous sur un système où 'Indication.c' et' indication.c' se réfèrent à la même fichier? Votre erreur de compilation est dans 'Indication.c', donc à moins que le système de fichiers ne soit sensible à la casse, vous regardez le mauvais fichier. (Mac et Windows sont généralement insensibles à la casse.) Votre version de GCC ne vous dit-elle pas où se trouve la déclaration précédente? –