Kaskalierte Struktur an eine Funktion uebergeben

21/09/2007 - 21:54 von Alexander Graus | Report spam
Hi!

Ich habe zur Zeit ein kleines Problem. Ich habe eine Kaskalierte
Struktur deklariert:
[schnipp]
struct weblink
{
char link[MAX];
char beschr[MAX];
};

struct seite
{
char seitenname[MAX];
char uberschrift[MAX];
struct weblink www[100];
}kopf;
[schnapp]

Dann habe ich die Funktion so deklariert:
[schnipp]
void dateispeichern(struct seite ausgabe);
[schnapp]

Wenn ich jetzt die struktur hiermit
[schnipp]
dateispeichern(struct seite ausgabe);
[schnapp]

aufrufen will bekomme ich die fehler meldung:

Expression syntax in funktion Main

ich weiß das das heißt das das der falsche syntax ist, aber ich
begreiffe nicht wie der richtig lauten müsste. Ich hab mich schon mal in
einigen Büchern und I-Net forem umgeschaut. Dort geht es aber nur um
einfache Strukturen nicht im Kaskalierte Strukturen.

Kann mir jemand sagen wo der Fehler liegt?

Ciao Alex
 

Lesen sie die antworten

#1 Thomas Richter
21/09/2007 - 22:47 | Warnen spam
Alexander Graus wrote:

struct weblink
{
char link[MAX];
char beschr[MAX];
};

struct seite
{
char seitenname[MAX];
char uberschrift[MAX];
struct weblink www[100];
}kopf;
[schnapp]

Dann habe ich die Funktion so deklariert:
[schnipp]
void dateispeichern(struct seite ausgabe);
[schnapp]

Wenn ich jetzt die struktur hiermit
[schnipp]
dateispeichern(struct seite ausgabe);
[schnapp]

aufrufen will bekomme ich die fehler meldung:

Expression syntax in funktion Main



Du rufst die Funktion genauso auf wie mit jedem anderen Datentyp:

dateispeichern(ausgabe);

Schließlich schreibst Du ja auch: sqrt(16.0) und nicht sqrt(double
16.0); Den Typ bekommt der Compiler anhand der Deklaration des Objektes
schon von alleine heraus.

Allerdings, wenn mir diese Bemerkung erlaubt sei, bei Strukturen der
Größe würde ich emfehlen, einen Pointer auf eine (konstante) Struktur zu
übergeben, sonst muss der Compiler die ganze Struktur einmal kopieren.

Ergo:

void dateispeichern(const struct seite *ausgabe);

und Aufruf über

dateispeichern(&ausgabe);

Natürlich musst Du den Funktionsrumpf dann anpassen (etwa: . wird zu ->).

Grüße,
Thomas

Ähnliche fragen