Seltsames Warning

Gast #5234215
Lesenswert?

Hallo liebe Forenmitglieder,

wie schon im Betreff beschrieben, erhalte ich ein Warning, welches ich 
mir nicht erklären kann und hoffe, dass mir da jemand weiterhelfen kann. 
Und zwar ein Beispiel:
1
int main()
2
{
3
    int array[9];
4
    const int (*p2)[9] = &array;
5
}

erhalte ich als Warnung (vorausgesetzt gcc -std=c99 -pedantic ist 
gesetzt):

"pointers to arrays with different qualifiers are incompatible in ISO C 
[-Wpedantic]"

Ich hoffe, ihr könnt mir da weiterhelfen.

Lg
Gast #5234254
Lesenswert?

Hm. Aber was ist an der Warnung für Dich seltsam oder unverständlich?

Mal ganz lakonisch gesagt, ist sie für Menschen, die C können und 
Englisch, recht gut verständlich. Wenn ich voraussetze, dass Du beides 
kannst und nur ein Detail problematisch ist, würde ich mir wünschen 
dieses Detail auch genannt zu bekommen. Andernfalls solltest Du eben C 
und Englisch lernen. Das kann man Dir hier nicht abnehmen.
Gast #5234347
Lesenswert?

> Aber was ist an der Warnung für Dich seltsam oder unverständlich?

Auch ich finde selbst nach Jahren noch die Warnungen des C Compilers 
teilweise sehr Kryptisch formuliert. Allerdings findet man Erklärungen 
meist leicht mit Google, wenn man Namen und Zeilennummern weg lässt.
Gast #5234353
Lesenswert?

> Auch ich finde selbst nach Jahren noch die Warnungen des C Compilers
> teilweise sehr Kryptisch formuliert.

Jain. Wenn man C BottomUp gelernt hat, also erst mal Assembler und auch 
eine Vorstellung davon hat was ein Compiler aus dem Source fuer einen 
Coder erzeugt dann sind die Fehlermeldungen eigentlich verstaendlich.
Lernt man es TopDown, also ohne Ahnung mit dem C-Buch in der Hand und 
wohlmoeglich noch aus der behueteten PC-Umgebung heraus dann ist manches 
sicher nicht sofort verstaendlich.

Da merkt man halt die Geschichte. :-)

Olaf
#5234365
Lesenswert?

Der Code macht eigentlich auch keinen Sinn, nicht nur wegen dem 
int/const int. Mir scheint dem TE ist nicht klar, dass ein Zeiger eine 
Adresse einer Adresse ist, ein array aber nur eine Adresse. Warum 
erstellt man ein Zeiger-Array und übergibt diesem...ja, was eigentlich? 
Die Adresse der Adresse des ersten Elements? Irgendwie siehts für mich 
mehr als komisch aus.
Gast #5234426
Lesenswert?

Nop schrieb:
> Nur dereferenzieren darf man ihn nicht.

Natürlich darf man das.
Niemand kann einem das verbieten. (zumindest C tut das nicht)
Das ist ein voll funktionsfähiger Pointer!
Auch, wenn es nur selten Sinn machen wird.
Denn er zeigt in die Wiese.

Übrigens, Sinn:
Mir verbirgt sich der Sinn, hinter dem Codefetzen da oben.
Gast #5234714
Lesenswert?

M. K. schrieb:
> die uns ne -1 verpassen,

Naja...

Meine Ansicht zu Bewertungen:
Um jemanden, oder dessen Aussagen, "gerecht" zu bewerten, müssen 
folgende Bedingungen erfüllt sein:
1. Der Bewerter sollte mehr Ahnung von dem Thema haben, als der 
Bewertete
2. Der Bewerter sollte neutral sein

Beides scheint mir, in diesem Forum, längst nicht immer gegeben zu sein.

Und im Übrigen:
Eine Weltanschauung auf einen +/- Klick reduziert.
Eine reine Schwarz/Weiß Welt.
Recht Aussage los, das ganze.
Gast #5234751
Lesenswert?

Stefan U. schrieb:
>> Aber was ist an der Warnung für Dich seltsam oder unverständlich?
>
> Auch ich finde selbst nach Jahren noch die Warnungen des C Compilers
> teilweise sehr Kryptisch formuliert. Allerdings findet man Erklärungen
> meist leicht mit Google, wenn man Namen und Zeilennummern weg lässt.

Hast Du schon mal clang versucht? Dort sind die Meldungen wesentlich 
ausführlicher.

Grüsse,
René
Gast #5234772
Lesenswert?

Danke für die Erklärung. Im Moment bin ich froh, für alle meine 
Mikrocontroller einen halbwegs aktuellen gcc gefunden zu haben, wo auch 
make mit drin ist.

Aber ich werde mir das trotzdem mal anschauen, denn klarere 
Fehlermeldungen (wie ich von Java gewohnt bin) wären schon eine feine 
Sache.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren