strchr Funktion überladen?

#3148101
Für den Compiler ist der Aufruf der Funktion nicht eindeutig. Der 
Compiler hat mehrere Funktionen, die auf deinen Aufruf passen.

Überprüfe mal deine Aufrufparameter.

Ein bisschen mehr Source-Code wäre auch nicht verkehrt.

Grüsse
Gast #3148140
hmm...

rx_buffer ist ein unsigned char, erwartet wird ein const char
und '#' ist doch ein int, oder?

Weiterhin gibt doch strchr entweder die Stelle zurück, an der die # 
steht, oder eine Null, falls keine # enthalten, richtig?
Das kann in dem int length gespeichert werden.
#3148145
Und genau der Rückgabewert passt nicht auf deinen int length!

Der Rückgabewert ist ein Zeiger (char*). Je nach System ist dieser 
16/32/64 Bit. Der Compiler weigert sich eine Adresse in einen Integer zu 
casten. Was auch irgendwie keinen Sinn ergibt. Der Rückgabewert gibt 
auch nicht irgendeine Länge zurück sondern die Speicheradresse des 
gefundenen Zeichens.

Um die Länge zu erhalten müsstest Du rx_buffer von diesem Zeiger 
subtrahieren.

Grüsse
#3148167
Name schrieb:
> Fehler: call of overloaded 'strchr(unsigned char [32], char)' is
> ambiguous

Also scheint es sich um C++ zu handeln. Da gibt es zwei Überladungen der 
Funktion. Wo ist denn der Rest der Fehlermeldungen? Ich kenne das so, 
daß der Compiler danach noch die Kandidaten nennt, die er in Betracht 
ziehen würde.

Name schrieb:
> hmm...
>
> rx_buffer ist ein unsigned char,

Warum unsigned? Das ist der Auslöser der Fehlermeldung, weil der 
Compiler sich aufgrund des falschen Zeigertypen nicht entscheiden kann, 
welches strchr er aufrufen soll.

> erwartet wird ein const char und '#' ist doch ein int, oder?

Nicht in C++. Da ist '#' ein char.

> Weiterhin gibt doch strchr entweder die Stelle zurück, an der die #
> steht, oder eine Null, falls keine # enthalten, richtig?
> Das kann in dem int length gespeichert werden.

Du willst den zurückgegebenen Zeiger in einem int speichern?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.