Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En funktionsdefinition anger namnet på funktionen, vilka typer och antal parametrar den förväntar sig att ta emot och dess returtyp. En funktionsdefinition innehåller också en funktionstext med deklarationerna för dess lokala variabler och de instruktioner som avgör vad funktionen gör.
Syntax
              translation-unit:
 external-declaration 
 
              translation-unit
              external-declaration
            
              external-declaration: /* Tillåts endast vid externt omfång (fil) */
 function-definition
 declaration
              function-definition:
 
              declaration-specifiers
              väljaattribute-seqväljadeclaratordeclaration-listväljacompound-statement
              /* 
              attribute-seq är Microsoft-specifik */
Prototypparametrar är:
              declaration-specifiers:
 
              storage-class-specifier
              declaration-specifiers
              välja 
 
              type-specifier
              declaration-specifiers
              välja
 
              type-qualifier
              declaration-specifiers
              välja
              declaration-list:
 declaration
 
              declaration-list
              declaration
            
              declarator:
 
              pointer
              väljadirect-declarator
              direct-declarator: /* En funktionsdeklarator */
 
              direct-declarator
              (
              parameter-type-list
              ) /* Deklarator i ny stil */
 
              direct-declarator
              (
              identifier-list
              välja) /* Deklarator i föråldrad stil */
Parameterlistan i en definition använder den här syntaxen:
              parameter-type-list: /* Parameterlistan */
 parameter-list 
 
              parameter-list
              , ...
            
              parameter-list:
 parameter-declaration
 
              parameter-list
              ,
              parameter-declaration
            
              parameter-declaration:
 
              declaration-specifiers
              declarator
            
 
              declaration-specifiers
              abstract-declarator
              välja
Parameterlistan i en funktionsdefinition i gammal stil använder den här syntaxen:
              identifier-list: /* Används i föråldrade funktionsdefinitioner och deklarationer */
 identifier
 
              identifier-list
              ,
              identifier
            
Syntaxen för funktionstexten är:
              compound-statement:
 
              {
              declaration-list
              väljastatement-listvälja}
De enda storage-class-specificerare som kan ändra en funktionsdeklaration är extern och static. Specificeraren extern betyder att funktionen kan refereras från andra filer, dvs. funktionsnamnet exporteras till länkaren. Specificeraren static betyder att funktionen inte kan refereras från andra filer, dvs. namnet exporteras inte av länkaren. Om ingen lagringsklass visas i en funktionsdefinition extern antas det. I vilket fall som helst är funktionen alltid synlig från definitionspunkten till slutet av filen.
Den valfria declaration-specifiers och obligatoriska declarator tillsammans anger funktionens returtyp och namn. 
              declarator är en kombination av identifieraren som namnger funktionen och parenteserna efter funktionsnamnet. Den valfria attribute-seq icke-terminalen är en Microsoft-specifik funktion som definierats i Funktionsattribut.
              direct-declarator (i syntaxendeclarator) anger namnet på den funktion som definieras och identifierarna för dess parametrar. 
              direct-declarator Om innehåller en parameter-type-listanger listan typerna av alla parametrar. En sådan deklarator fungerar också som en funktionsprototyp för senare anrop till funktionen.
A declaration i declaration-list funktionsdefinitionerna i får inte innehålla något storage-class-specifier annat än register. I type-specifier syntaxen declaration-specifiers kan endast utelämnas om lagringsklassen register har angetts för ett värde av int typen.
              compound-statement är funktionstexten som innehåller lokala variabeldeklarationer, referenser till externt deklarerade objekt och -instruktioner.
I avsnitten Funktionsattribut, Lagringsklass, Returtyp, Parametrar och Funktionstext beskrivs komponenterna i funktionsdefinitionen i detalj.