Maison  >  Article  >  développement back-end  >  Erreur de syntaxe C++ : la définition de fonction au sein d'une fonction n'est pas autorisée, comment y remédier ?

Erreur de syntaxe C++ : la définition de fonction au sein d'une fonction n'est pas autorisée, comment y remédier ?

PHPz
PHPzoriginal
2023-08-21 23:28:532482parcourir

En programmation C++, nous rencontrons souvent différentes erreurs de syntaxe. L’un des problèmes les plus courants consiste à définir des fonctions au sein de fonctions. Comme nous le savons tous, la définition d’une fonction se fait généralement dans le cadre global. Cependant, la définition de fonctions dans des fonctions n'est pas autorisée en C++, donc une fois cette erreur de syntaxe se produit, le compilateur ne parviendra pas à transmettre le code.

La raison de ce problème est que les définitions dans les fonctions empêchent le compilateur de reconnaître leur portée. Surtout lorsque les noms de paramètres des fonctions internes et externes sont identiques, le compilateur peut être confus. Donc, pour résoudre ce problème, nous devons déplacer la définition de la fonction interne hors de la fonction dans laquelle elle se trouve et la définir en dehors de la fonction externe.

Montrons comment résoudre ce problème. Par exemple, dans le programme suivant, nous définissons une fonction int carré(int x), qui calcule le carré d'un entier. La définition interne de cette fonction utilise les noms de paramètres de la fonction externe, et nous ne les avons pas placés dans la portée appropriée.

#include<iostream>
using namespace std;

int main()
{
    int x = 5;
    int square(int x)
    {
        return x * x;
    }
    int result = square(x);
    cout << "The square of " << x << " is " << result << endl;
    return 0;
}

Lorsque nous compilons ce programme, le compilateur génère l'erreur suivante :

error: expected constructor, destructor, or type conversion before ‘(’ token
int square(int x)

Pour résoudre ce problème, nous devons déplacer la fonction interne et la placer en dehors de la fonction externe. Le programme modifié est le suivant :

#include<iostream>
using namespace std;

int square(int x)   //将函数square()移到外部函数之外
{
    return x * x;
}

int main()
{
    int x = 5;
    int result = square(x);
    cout << "The square of " << x << " is " << result << endl;
    return 0;
}

Maintenant, nous avons déplacé la fonction square() en dehors de la fonction externe et supprimé sa définition interne. De cette façon, nous pouvons réussir à compiler et exécuter le programme.

Lors de la correction des erreurs de syntaxe, nous devons toujours garder à l’esprit les exigences et les restrictions du C++ sur les définitions de fonctions. Placer les définitions de fonctions dans la portée appropriée peut éviter certaines erreurs de syntaxe courantes. Lors de l'écriture du code, nous devons être prudents et rigoureux, et toujours prêter attention aux problèmes possibles pour garantir le fonctionnement normal du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn