strchr Funktion überladen?

Gast #3148140
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.