Ungültige Konvertierung von 'const char *' in 'unsigned char *'

8

Ein einfacher C ++ Code:

%Vor%

beim Kompilieren mit g ++ gibt folgenden Fehler:

%Vor%

Warum?

    
anupamD 26.12.2015, 11:10
quelle

4 Antworten

15

In String-Literalen von C ++ gibt es Typen von Arrays mit konstanten Zeichen. Zum Beispiel hat das String-Literal "123" den Typ const char[4] .

In Ausdrücken mit seltenen Ausnahmen werden Arrays in Zeiger auf ihre ersten Elemente konvertiert.

Also in dieser Erklärung

%Vor%

Der Initialisierer hat den Typ const char * . Es gibt keine implizite Konvertierung von const char * nach unsigned char *

Sie könnten

schreiben %Vor%     
Vlad from Moscow 26.12.2015, 11:28
quelle
3

Ein weiterer Ansatz, der Ihnen ein modifizierbares unsigned char -Array bietet, wie Sie es ursprünglich wollten, ist:

%Vor%

Sie können const zu beiden Deklarationen hinzufügen, um const unsigned char ohne explizite Umwandlung zu erhalten.

    
Davislor 27.12.2015 03:58
quelle
0

Verwenden Sie einfach

  1. nur char * anstelle von unsigned char * während der Deklaration

  2. Zeichen t [MAX_SIZE]="123"; // MAX_SIZE sollte früher definiert werden

  3. getestet strcpy () und strncpy Funktionen

malang 26.12.2015 11:23
quelle
-1

Konvertierungen von einem Typ zu einem anderen Typ sind einfach, wenn Sie selbstdefinierte Makros verwenden. Hier finden Sie eine Reihe von Makros, die Sie für jede Plattform (Windows, Linux, Solaris, AIX usw.) verwenden können.

%Vor%

In Ihrem Fall

%Vor%

entspricht

%Vor%     
SajithP 30.08.2017 07:17
quelle

Tags und Links