C: Compiler-Warnung "return discards qualifiers from pointer target type"

Bekomme ich einen compiler - "Warnung: return discards qualifiers from pointer target type" aus meiner Funktion unten.

unsigned char* getBeginning(const unsigned char * Packet)
{
                    return Packet+3;
}

Habe ich recherchiert das auf SO und an anderen Orten, und es scheint, dass der compiler beschwert sich, dass obwohl ich in einem const-Zeiger, bin ich wieder einen non-const-Zeiger.

Was ich versuche zu erreichen ist:

1.) ich möchte damit die Benutzer wissen, dass ich es nicht ändern Sie Ihre Daten in dieser Funktion, daher der const.

2) Jedoch später Funktionen verwenden Sie den Mauszeiger hier wieder zu änderungen, so dass ich nicht möchte, dass meine Rückgabetyp const als gut.

Gibt es einen besseren Weg, dies zu tun, wo ich nicht eine Verwarnung bekommen? Ich bin immer noch lernen, C.

  • Sind Sie sicher, dass Sie müssen entfernen die const? Das klingt wie eine schlechte Idee...
  • Das ist eine gemeinsame C-idiom für diesen Fall (die alternative wäre, schreiben Sie zwei Funktionen (eine für const, einen für nicht-const), oder schreiben Sie nur eine nicht-const version und lassen Sie die Anrufer Besetzung der const entfernt), cf. strchr.
  • Danke für die Antwort! Nach dem Lesen der Antworten ist es möglich, ich mache das komplett falsch. Ich wollte für die user, pass mir ein unsigned char *. Es muss nicht ein const unsigned char *. Ich dachte, ich könnte mit dem "const" in der definition einer Funktion zu zeigen, dass ich wäre nicht das ändern der Daten wies IN DIESE BESONDERE Funktion. Also, in anderen Worten, ich bin mir nicht erwarten, dass die user, pass mir ein const unsigned char *, ich wollte nur, um Ihnen zu zeigen, ich werde nicht zu berühren, unsigned char * hier. Später, ist der zurückgegebene Zeiger ist das ändern von Daten. Gibt es einen besseren Weg, dies zu tun?
InformationsquelleAutor user1762250 | 2014-07-18
Schreibe einen Kommentar