ubuntuusers.de

C-Error "... redeclared as different kind of symbol"

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

PrairieDog

Anmeldungsdatum:
16. Februar 2006

Beiträge: 870

Ich hab eine C-Datei der folgenden Form:

1
2
3
4
5
6
7
8
static int foo = 0;
...
static __init int bar(char *str)
{
    ...
    foo = 2;
    return 1;
}

Nun meckert der Compiler:

3: error: ‘foo’ redeclared as different kind of symbol
1: error: previous definition of ‘foo’ was here
6: error: lvalue required as left operand of assignment

Ich versteh was da steht, ich versteh nicht, was ich zu ändern habe, ich bin kein C-Programmierer. ☹ Nach den Fehlern zu googeln ist relativ sinnlos und Zeit für eine Einarbeitung in C-Grundlagen hab ich auch nicht. foo soll in anderen statischen Methoden als 1 zur Verfügung stehen, außer es wurde bar aufgerufen, dann eben als 2.

Bitte um einen Schubs, danke!

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Die Fehlermeldung besagt, dass es schon irgendetwas gibt, das foo heißt, und dass dieses etwas keine Variable ist, sondern z. B. eine Funktion, ein Enumerator oder ein typedef.

PrairieDog

(Themenstarter)

Anmeldungsdatum:
16. Februar 2006

Beiträge: 870

Also ist obiges Konstrukt nicht per se falsch (und schon sowieso nicht, weil in Zeile 3 statt bar foo stehen sollte). 🙄

Der Fehler: Eine Methode hieß wie die Variable (war ich wohl geistig abwesend, das zu verbrechen).

Hab Dank!

Antworten |