Kompiler note bei Makro - Was ist falsch?

Gast #6341855
Lesenswert?

Hi!

Danke für die schnellen Antworten!

Die Meldungen davor und danach hatten in keinster Weise etwas mit diesem 
Error zu tun, da ging es um const-Qualifier, die verloren gingen:
1
discards const qualifier from pointer target type

Habe testweise die Klammern um resultCode entfernt. Seitdem bliebt die 
Meldung aus.
1
#define DO_IF_ERROR(resultCode)                         if(RESULT_OK > resultCode)

Grüße
Arct
Moderator Persönliche Seite #6341867
Lesenswert?

eProfi schrieb:
> Die Klammer würde ich
> drinlassen.

Auf jeden Fall! Makroargumente sollten im Makro immer geklammert werden, 
wenn das syntaktisch möglich ist, ansonsten können da bei unbedarfter 
Verwendung seltsame Dinge passieren.

Arct schrieb:
> Die Meldungen davor und danach hatten in keinster Weise etwas mit diesem
> Error zu tun

Doch, haben sie. Deshalb steht doch da "in definition of macro …".

Wenn du nicht gewillst bist, uns ein Stückchen mehr vom "rundrum" zu 
zeigen, wird dir wohl keiner helfen können.
Gast #6341891
Lesenswert?

Arct schrieb:
> Habe testweise die Klammern um resultCode entfernt. Seitdem bliebt die
> Meldung aus.

Dann macht dein Code jetzt wahrscheinlich was völlig anderes als 
gewünscht.

Arct schrieb:
> Die Meldungen davor und danach hatten in keinster Weise etwas mit diesem
> Error zu tun

Das kann nicht sein. Du hast eine halbe Fehlermeldung gepostet. Die 
taucht nicht einfach so halb auf, da gehört noch was zu.

Arct schrieb:
> Die Meldungen davor und danach hatten in keinster Weise etwas mit diesem
> Error zu tun, da ging es um const-Qualifier, die verloren gingen:

Vielleicht passierte dieser Fehler ja im Makro-Argument?! Dann ändern 
die Klammern aber nichts. Oder hast du den "const"-Fehler behoben und 
gleichzeitig die Klammern entfernt?

Die Klammern solltest du sowieso wieder einfügen.
Gast #6341895
Lesenswert?

Hallo!

Ja, ihr habt offensichtlich recht! Habe die Klammern wieder hinzugefügt 
und es geht. Die Meldung bezog sich dann wirklich auf den Fehler davor, 
mit dem const-Qualifier, denn DO_IF_ERROR wurde mit eben dieser Funktion 
aufgerufen, also DO_IF_ERROR(funktion(x,y,z)) { ...}

Dake & Grüße
Arct

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