erreur C3861: ‘rollDice’: identifiant non trouvé

J’essaie d’implémenter des graphiques, mais j’ai du mal à appeler la fonction int rollDice () indiquée tout en bas et je ne sais pas comment résoudre ce problème toutes les idées … Je reçois une erreur erreur C3861: ‘rollDice’: identifiant non trouvé.

int rollDice(); void CMFCApplication11Dlg::OnBnClickedButton1() { enum Status { CONTINUE, WON, LOST }; int myPoint; Status gameStatus; srand( (unsigned)time( NULL ) ); int sumOfDice = rollDice(); switch ( sumOfDice ) { case 7: case 11: gameStatus = WON; break; case 2: case 3: case 12: gameStatus = LOST; break; default: gameStatus = CONTINUE; myPoint = sumOfDice; break; } while ( gameStatus == CONTINUE ) { rollCounter++; sumOfDice = rollDice(); if ( sumOfDice == myPoint ) gameStatus = WON; else if ( sumOfDice == 7 ) gameStatus = LOST; } if ( gameStatus == WON ) { } else { } } int rollDice() { int die1 = 1 + rand() % 6; int die2 = 1 + rand() % 6; int sum = die1 + die2; return sum; } 

mis à jour

Le compilateur parcourt vos fichiers du début à la fin, ce qui signifie que le placement de la définition de votre fonction est important. Dans ce cas, vous pouvez soit déplacer la définition de cette fonction avant sa première utilisation:

 void rollDice() { ... } void otherFunction() { // rollDice has been previously defined: rollDice(); } 

ou vous pouvez utiliser la déclaration forward pour indiquer au compilateur qu’une telle fonction existe:

 // function rollDice with the following prototype exists: void rollDice(); void otherFunction() { // rollDice has been previously declared: rollDice(); } // definition of rollDice: void rollDice() { ... } 

Notez également que le prototype de fonction est spécifié par son nom , mais renvoie également une valeur et des parameters :

 void foo(); int foo(int); int foo(int, int); 

C’est ainsi que les fonctions sont distinguées . int foo(); et void foo(); sont des fonctions différentes, mais comme elles ne diffèrent que par leur valeur de retour, elles ne peuvent pas exister dans la même scope (pour plus d’informations, voir Surcharge de fonction ).

Mettez la déclaration de la fonction rollDice

  int rollDice(); 

avant OnBnClickedButton1 ou déplacez simplement la définition de la fonction OnBnClickedButton1 avant OnBnClickedButton1 .

La raison en est dans votre code actuel lorsque vous appelez rollDice dans OnBnClickedButton1 , la fonction n’a pas encore été vue par le compilateur, c’est pourquoi vous avez vu que cet identifier not found erroné.