probleme mit deklarationen
-
gute nacht allen zusammen.
da bin ich nun wieder
. ich wollte meinen heute zur uebung geschriebenes telefonbuch (hoioioi - da staunt ihr, was ?!
) in ein schoenes design schreiben, dabei kamen dann ein haufen compilerfehler, die ich behoben habe - ausser den im folgenden block.
void fnd_nm(); void add_nmb(); struct item { char name[80]; char nname[80]; int telnmb[20]; }; struct item *lst, insrt; struct item* rd_in(); int nit; FILE *fp; /3 fp = fopen("pnbk.thc", "a"); /1|2|4|5
so als compilerfehler erhalte ich (Borland 6.0):
E2303 Typnamen erwartet [1]
E2356 Redeklaration von 'fp' mit anderem Typ [2]
E2344 'fp' bereits deklariert [3]
E2063 unzuleassige Zeigerkonventierung [4]
E2293 ) erwartet [5]die meldungen sind in originalreihenfolge. die zahlen hinter den fehlern signalisieren immer die stellen im quelltext auf die sich die compilermeldung beziehen. ich verstehe die meldungen nicht und habe auch schon wie ein verrueckter am quelltext gebastelt - nichts. wieso ist es ein fehler durch FILE *fp den bezeichner fp vorzudeklarieren?
kann mir jemand weiterhelfen - ich freue mich dankend ueber jede hilfe.
gute nacht caspar
-
fp=fopen()
ist eine Zuweisung und muss innerhalb einer Funktion stehen.FILE* fp;
ist eine definition und kann auch ausserhalb einer Funktion stehen -> globale VariableFILE* fp=fopen()
das ist eine Initialisierung - ich glaube das suchst du.aber: globale Variablen sollten vermieden werden...
-
eine globale Variable kann man nicht mit einer Funktion initialisieren:
// global FILE* fp=fopen()
ist nicht zulässig!
Man darg ne globale Variable nur mit einer Konstante oder einer Adresse + vel - einer Konstante initialisieren!
-
vielen dank - ihr habt mich vor einem nervenzusammenbruch bewahrt!
Danke und Gruss caspar