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;
}
}
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?
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. Die Initialwerte stehen aber an der Stelle, wo du sie
deklarieren musst (damit sie in allen switch/case-Zweigen verfügbar ist)
noch gar nicht fest.
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.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang