unused variable 'data'

OP #5551509
Lesenswert?

Hallo,
ich möchte mit diesen programm den Inhalt von data jenach der variable z 
ändern. Dabei habe ich zwei Methoden (auf case 1 und case 2)versucht und 
bekomme aber immer die Meldung "unused variable data" .

hätte einer eine Idee wie ich die Meldung behoben könnte?

danke im Voraus.

void *DataStream(int x, unsigned char *y, int z)
{
  //const char *data[10];

  switch(z)
  {
  case 1:
    ;
    const char* data[] = {"a","b","c","d","e","f"}; // an diese Stelle 
kommt die meldung
    break;

  case 2:
  {
    const char* data[] = {"a","b","c"};// an diese Stelle kommt die 
meldung
    break;
  }

  default:
  {
    const char* data[] = {"a","b","c","d","e","f"};// an diese Stelle 
kommt die meldung
    break;
  }

  }

  const unsigned char Parameter[10];
  int unit = 0;
  int unitID = SetUnit(unit);
  uint8_t crc;

  while(1)
  {
    debut:
    for(int i = 0; i < 6; i++)
    {
      sprintf((char *)Parameter,"%s", data[i]);
      Sleep(10);
      crc = CalculateCRC(Parameter);
      SendViaRS232WithCRC(x,Parameter, crc);
      Sleep(10);
      ReadData(x,y,Parameter, unitID);
    }
    printf("\n\n");
    goto debut;
  }
}
Gast #5551524
Lesenswert?

Wie viel Zeit hast du jetzt eigentlich schon verschwendet, um dieses 
Projekt durch Try-And-Error & Forenhilfe umzusetzen? Wäre es nicht 
deutlich schneller gegangen, einmal ein Buch über C zu lesen und es dann 
fix umzusetzen?
#5552592
Lesenswert?

Das sieht mir aus, als hättest du nach Trial&Error das irgendwie zum 
Compilieren gebracht. Es kann so aber nicht funktioniere.

Kaiser K. schrieb:

> void *DataStream(int x, unsigned char *y, int z)
> {
>   //const char *data[10];
>
>   switch(z)
>   {
>   case 1:
>     ;
>     const char* data[] = {"a","b","c","d","e","f"}; // an diese Stelle
> kommt die meldung
>     break;

Hier wird eine Variable names "data" definiert und nur dann 
initialisiert, wenn du im case 1 landest.

>   case 2:
>   {
>     const char* data[] = {"a","b","c"};// an diese Stelle kommt die
> meldung
>     break;
>   }

Hier wird aufgrund der geschweiften Klammern ein neuer Scope aufgemacht, 
d.h. dass man da drin Variablen unabhängig von schon vorher definierten 
Variablen außerhalb definieren und benutzen kann. Alle Variablen, die da 
drin definiert sind, hören mit der schließenden Klammer auf zu 
existieren.
Du erzeugst also dort eine zweite Variable mit Namen data, die nur 
zwischen den geschweiften Klammern sichtbar ist und die genau mit der 
schließenden Klammer nach dem break wieder verschwindet. Da sie während 
ihrer Existenzdauer niemals benutzt wird, bringt der Compiler die 
besagte Warnung.

Jörg W. schrieb:
> Das geht so einfach nicht.
>
> Dein "const" erzwingt, dass die Variable auch in der Deklaration direkt
> initialisiert wird, denn später darf man eine const-Variable nicht mehr
> ändern.

Es ist keine const-Variable.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren