Also, ich habe eine Funktion, wo ich eine Struktur deklariere, die gefüllt ist und auch eine neue Funktion deklarieren will. Wenn ich oben eine neue Funktion deklariere, funktioniert es, wenn ich es in der gleichen Zeile nach Komma (,) deklariere, funktioniert es, aber es funktioniert nicht in der unteren Zeile. Irgendwelche Erklärungen? Danke im Voraus.Warum kann ich nicht strukturieren 2. mal in Funktion?
void CFilter(float avgprofit, int lines)
{
//client goodclient[MAX_CLIENT]; THIS WOULD COMPILE
client client[MAX_CLIENT], goodclient[MAX_CLIENT]; // THIS COMPILES
//client goodclient[MAX_CLIENT]; THIS WOULDN'T COMPILE
int i, amount = 0;
float userprofit;
for (i = 0; i <= lines; i++) {
userprofit = client[i].loses - client[i].wins;
if (userprofit >= avgprofit) {
client[i].goodclient = 1;
} else {
client[i].goodclient = 0;
}
}
}
Wenn Sie 'goodclient' in der nächsten Zeile, hast du es aus der vorherigen Zeile entfernt? Es ist unklar. Übrigens bitte vermeiden Sie den gleichen Namen für eine Variable als Typ. Bestenfalls: Verwirrung, schlimmstenfalls: Fehler. –
* Warum kann ich nicht strukturieren 2. Mal in Funktion? * Weil Sie nicht können. Es ist eigentlich eine * Definition *, die nicht dupliziert werden kann. Eine duplizierte * Deklaration *, wie zB ein Funktionsprototyp oder eine externe Variable, kann jedoch - solange sie alle identisch sind - sein. –
Gute Idee, Typen mit einem Großbuchstaben zu starten - kann sie dann von Variablen unterscheiden –