Donc, j'ai une fonction où je déclare une structure qui est remplie et qui veut aussi déclarer une nouvelle fonction. Quand je déclare une nouvelle fonction en haut cela fonctionne, quand je le déclare sur la même ligne après la virgule (,) cela fonctionne mais ça ne marche pas sur la ligne du bas. Des explications? Merci d'avance.Pourquoi ne puis-je pas déclarer la structure 2ème fois en fonction?
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;
}
}
}
Lorsque vous avez 'goodclient' sur la ligne suivante, l'avez-vous retiré de la ligne précédente? C'est flou. BTW s'il vous plaît éviter d'utiliser le même nom pour une variable que son type. Au mieux: confusion, au pire: erreurs. –
* Pourquoi ne puis-je pas déclarer la structure 2ème fois en fonction? * Parce que vous ne pouvez pas. C'est en fait une * définition * qui ne peut pas être dupliquée. Cependant, une double * déclaration *, telle qu'un prototype de fonction ou une variable externe, peut être - tant qu'elles sont toutes identiques. –
Bonne idée de commencer les types avec une lettre majuscule - peut alors les distinguer des variables –