Partager via


Définitions de fonction C

Une définition de fonction spécifie le nom de la fonction, les types et le nombre de paramètres qu'elle s'attend à recevoir et son type de retour. Une définition de fonction comprend également un corps de fonction avec les déclarations de ses variables locales, ainsi que les instructions qui déterminent ce que fait la fonction.

Syntaxe

  • translation-unit :
    external-declaration

    translation-unit external-declaration

  • external-declaration : /* Autorisé uniquement dans la portée externe (fichier) */
    function-definition

    declaration

  • function-definition : /* Ici, le déclarateur est le déclarateur de fonction */
    declaration-specifiers opt attribute-seq opt declarator declaration-list opt compound-statement

    /* attribute-seq est spécifique à Microsoft */

Les paramètres de prototype sont les suivants :

  • declaration-specifiers :
    storage-class-specifier declaration-specifiers opt

    type-specifier declaration-specifiers opt

    type-qualifier declaration-specifiers opt

  • declaration-list :
    declaration

    declaration-list declaration

  • declarator:
    pointer opt direct-declarator

  • direct-declarator : /* Déclarateur de fonction */
    direct-declarator ( parameter-type-list ) /* Déclarateur de nouveau style */

    direct-declarator ( identifier-list opt ) /* Déclarateur de style obsolète */

La liste des paramètres dans une définition utilise la syntaxe suivante :

  • parameter-type-list : /* La liste de paramètres */
    parameter-list

    parameter-list**, ...**

  • parameter-list :
    parameter-declaration

    parameter-list**,** parameter-declaration

  • parameter-declaration :
    declaration-specifiers declarator

    declaration-specifiers abstract declarator opt

La liste des paramètres dans une définition de fonction de style ancien utilise la syntaxe suivante :

  • identifier-list : /* Utilisé dans les définitions et les déclarations de fonction de style obsolète */
    identifier

    identifier-list**,** identifier

La syntaxe du corps de la fonction est la suivante :

  • compound-statement : /* Le corps de la fonction */
    { declaration-list opt statement-list opt }

Les seuls spécificateurs de classe de stockage pouvant modifier une déclaration de fonction sont extern et static. Le spécificateur extern signifie que la fonction peut être référencée à partir d'autres fichiers ; autrement dit, son nom est exporté vers l'éditeur de liens. Le spécificateur static signifie que la fonction ne peut pas être référencée à partir d'autres fichiers ; autrement dit, le nom n'est pas exporté par l'éditeur de liens. Si aucune classe de stockage n'apparaît dans une définition de fonction, extern est utilisé. Dans tous les cas, la fonction est toujours visible du point de définition jusqu'à la fin du fichier.

Les declaration-specifiers facultatifs et le declarator obligatoire spécifient ensemble le type de retour et le nom de la fonction. declarator est une combinaison de l'identificateur qui nomme la fonction et des parenthèses qui suivent le nom de fonction. L'élément non terminal attribute-seq facultatif est une fonctionnalité spécifique à Microsoft définie dans Attributs de fonction.

L'élément direct-declarator (dans la syntaxe declarator) spécifie le nom de la fonction définie et les identificateurs de ses paramètres. Si l'élément direct-declarator inclut parameter-type-list, la liste spécifie les types de tous les paramètres. Ce déclarateur sert également de prototype de fonction pour les appels ultérieurs à la fonction.

Un paramètre declaration présent dans declaration-list dans les définitions de fonction ne peut pas contenir de storage-class-specifier autre que register. Le type-specifier de la syntaxe declaration-specifiers peut être omis uniquement si la classe de stockage register est spécifiée pour une valeur de type int.

L'élément compound-statement est le corps de la fonction contenant des déclarations de variables locales, des références à des éléments déclarés extérieurement et des instructions.

Les sections Attributs de fonction, Classe de stockage, Type de retour, Paramètres et Corps de la fonction décrivent les composants de la définition de fonction en détail.

Voir aussi

Concepts

Fonctions (C)