Compiler Warnungen - Runde 3

Hallo,

ich verstehe die Warnung nicht. Was ist los?
Der Code ist streng nach Handbuch. Irgendwas stört ihm an dem char Pointer.
Veraltete Conversion oder so. Wie dann nach neuesten Regeln?

char* p_str_Baureihe[] = {"BR86", "BR118", "BR V60"}; 

void setup() {
  Serial.begin(9600);

  for (int i=0; i<3; i++)  {
    Serial.println(p_str_Baureihe[i]);
  }
}

void loop() {
  
}

warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

char* p_str_Baureihe[] = {"BR86", "BR118", "BR V60"};

hi,

google sagt

const char*

gruß stefan

Hallo,

nach längerer Betrachtung probierte ich mit const char* ...
und siehe da, Warnung verschwunden. :wink: Scheint demnach die neue C Regel zu sein.

Edit:
warst etwas schneller mit tippen :wink:
nur wie hast du das mit Google gefunden? Zeig mal bitte den Link.

hi,

nach

warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings

gesucht.

gruß stefan

Das ist nicht neu. String Konstanten sind schon lange const. Da es eben Konstanten sind. Bei der Verwendung von PROGMEM erzeugt das keine Warnung, sondern einen Fehler.

const char* bedeutet ein veränderbarer Zeiger auf konstanten Speicher. Nicht zu verwechseln mit char const*, was ein konstanter Zeiger auf veränderbaren Speicher ist (man kann dann dem Zeiger nichts anderes zuweisen). Oder const char* const, was ein konstanter Zeiger auf konstanten Speicher ist (braucht man bei PROGMEM wenn man Arrays aus Strings hat).

Hallo,

dann hatte ich das wohl bei der Suche vor lauter Aufregung überlesen.
Danke Euch beiden und für die Erklärung mit 3 verschiedenen Varianten.