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

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.