Maison > développement back-end > C++ > le corps du texte

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

PHPz
Libérer: 2023-08-21 23:28:53
original
2554 Les gens l'ont consulté

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;
}
Copier après la connexion

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)
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal