Forum: Compiler & IDEs Compiler spinnt


von Xentex (Gast)


Lesenswert?

Hallo,

habe folgendes Problem:
Ich mache folgendes:
int x;
int *px;

px = &x;

UNd bekommen folgende Errors und Warnings:

warning: data definition has no type or storage class
warning: type defaults to 'int' in declaration of 'y'
error: conflicting types for 'px'
note: previous declaration of 'px' was here
warning: initialization makes integer from pointer without a cast

Sollte doch eigentlich funktionieren oder?

Danke schon mal

von Klaus (Gast)


Lesenswert?

Xentex schrieb:
> Compiler spinnt

Was täten wir nur ohne die ganzen Anfänger, die ständig die vielen 
Fehler in den Compilern finden? Die ganzen Profis würden dann auf ewig 
völlig verbugte Compiler benutzen müssen!

Im Ernst: Mit solchen Aussagen macht man sich lächerlich.


Und: In den geposteten 3 Zeilen liegt der Fehler nicht. Lies die 
Warnungen und Fehler nochmal genau durch! Die betreffen erstens eine 
Variable namens y (welche in den 3 Zeilen nicht vorkommt) und zweitens 
steht dort:
> error: conflicting types for 'px'
> note: previous declaration of 'px' was here

Du hast px bereits vorher mit anderem Typ deklariert.

von Bernhard M. (boregard)


Lesenswert?

Geht doch
1
void main (void)
2
{
3
int x;
4
int *px;
5
6
px = &x;
7
}

aber
1
int x;
2
int *px;
3
4
px = &x;

bringt genau Deine Fehlermeldungen...

von Xentex (Gast)


Lesenswert?

Sorry im Programm is es auch ein x musste das halt abtippen...

Ist natürlich:

int x;
int *px;
px = &x;

aber das problem ist, dass selbst wenn ich Variablen benutze die ganz 
sich noch nie verwendet worden der Fehler bleibt...

Habe mal

int pferd;
int *ppferd;
ppferd = &pferd;

versucht und funzt auch net...

Das ist ja eben das merkwürdige

von Rolf Magnus (Gast)


Lesenswert?

Xentex schrieb:
> Hallo,
>
> habe folgendes Problem:
> Ich mache folgendes:
> int x;
> int *px;
>
> px = &x;

Einfach so, oder in irgendeinem Kontext?

> UNd bekommen folgende Errors und Warnings:
>
> warning: data definition has no type or storage class
> warning: type defaults to 'int' in declaration of 'y'

Ein y kommt in deinem Code gar nicht vor. Sicher, daß die Fehlermeldung 
sich auf diesen bezieht?

> error: conflicting types for 'px'
> note: previous declaration of 'px' was here
> warning: initialization makes integer from pointer without a cast

Das sieht mir aus, als ob die Zuweisung nicht in einer Funktion steht. 
Dann würde ich genau diese Meldungen erwarten.

> Sollte doch eigentlich funktionieren oder?

Kommt drauf an. Wenn das genannte der komplette Inhalt der Datei ist, 
dann nicht.

PS: Warum hast du dir eigentlich die Mühe gemacht, fein säuberlich alle 
Zeilennummern aus den Meldungen zu entfernen?

von Klaus (Gast)


Lesenswert?

Bernhard M. schrieb:
> aberint x;
> int *px;
>
> px = &x;
>
> bringt genau Deine Fehlermeldungen...

Richtig, wenn die Zuweisung außerhalb einer Funktion steht, kommen die 
selben Fehlermeldungen. Da dort nur Deklarationen* stehen dürfen, 
versucht der Compiler das als solche zu verstehen.


*Ja, genaugenommen auch Definitionen. Aber auf jeden Fall keine 
Anweisungen.

von Bernhard M. (boregard)


Lesenswert?

Klaus schrieb:
> Bernhard M. schrieb:
>> aberint x;
>> int *px;
>>
>> px = &x;
>>
>> bringt genau Deine Fehlermeldungen...
>
> Richtig, wenn die Zuweisung außerhalb einer Funktion steht, kommen die
> selben Fehlermeldungen. Da dort nur Deklarationen* stehen dürfen,
> versucht der Compiler das als solche zu verstehen.
>
>
> *Ja, genaugenommen auch Definitionen. Aber auf jeden Fall keine
> Anweisungen.

Und ich vermute er hat es genau so gemacht...

von Xentex (Gast)


Lesenswert?

Danke euch hatte doch tatsächlich beim kopieren der Funktion den 
Funktionskopf vergessen ....

von Klaus (Gast)


Lesenswert?

Xentex schrieb:
> Danke euch hatte doch tatsächlich beim kopieren der Funktion den
> Funktionskopf vergessen ....

Und was lernen wir darauf? In 99,999% der Fälle ist nicht der Compiler 
der Trottel =)

von Xentex (Gast)


Lesenswert?

Ja is mir schon klar... aber war halt echt am verzweifeln arbeite schon 
seit mehreren Wochen an dem Projekt und gab auch nie Probleme und jetzt 
funktioniert auf einmal son blöder Pointer nicht :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.