Global funktion
En global funktion er en funktion defineret i en C-fil før main()-funktionen. Selv main()-funktionen er en global funktion, men main()-funktionen er ikke fokus i denne artikel. I sproget C er programmør-definerede funktioner normalt globale funktioner og blot omtalt som funktioner.
En global funktion kan kaldes i ethvert omfang i dens fil. For at en global funktion kan ses i en anden fil, skal dens prototype erklæres i den anden fil (se nedenfor). For at forhindre, at en funktion defineret i en fil kan ses i en anden fil, skal du gå foran definitionen med reserveret ord, statisk. Med det ville den statiske funktion kun være en global funktion i sin egen fil og vil ikke blive set i en anden fil.
Så en global funktion defineret i otherFile.c kan ses hvor som helst i otherFile.c. For at den kan ses i mainFile.c, skal dens prototype erklæres i mainFile.c (se nedenfor.) Dens definition i otherFile.c bør ikke indledes med 'statisk'. For at forhindre den i at blive set i mainFile.c, skal dens definition i otherFile.c laves statisk, fjernet et komma ved at sætte ordet static foran det.
Denne artikel illustrerer statisk funktion i computersproget, C begyndende med betydningen af funktionsprototype og dens brug i et C-program med to eller flere filer.
Kompilering af filerne, mainFile.c og otherFile.c, kan udføres med følgende Bash-terminalkommando:
gcc hovedfil. c anden fil. c - den temp. exe
temp.exe er navnet på den resulterende enkelte eksekveringsfil.
Artikelindhold
C Funktionsprototype
Overvej den globale funktionsdefinition:
char * fn1 ( char * stri ) {Vend tilbage stri ;
}
Prototypen til denne funktion er:
char * fn1 ( char * stri ) ;Det er funktionssignaturen, der slutter med semikolon.
Lad nu indholdet af den anden Fil.c være:
char * fn1 ( char * stri ) {Vend tilbage stri ;
}
Antag, at filen otherFile.c kun har definitionen af den globale funktion, fn1(). Lad nu indholdet af filen, mainFile.c, være:
#includechar * fn1 ( char * stri ) ;
int vigtigste ( )
{
char * str = fn1 ( 'set' ) ;
printf ( '%s \n ' , str ) ;
Vend tilbage 0 ;
}
Det begynder med inklusion af
Denne hovedfil har ikke definitionen af nogen anden global funktion end standard main()-funktionen. I hovedfunktionen kalder den første sætning funktionen fn1() defineret i den anden fil. Dette kald ville ikke være effektivt, hvis prototypen af fn1() ikke blev erklæret i denne fil, mainFile.c.
Hvis læseren har kodet ovenstående to filer, kan han kompilere programmet til én eksekverbar fil med følgende kommando:
gcc hovedfil. c anden fil. c - den temp. exeved at trykke på Enter-tasten i slutningen af linjen. Outputtet skal være 'set'.
Global funktion
MainFile.c-filen kan ændres som følger:
#includechar * fn1 ( char * stri ) ;
char * fn ( char * st ) {
Vend tilbage st ;
}
int vigtigste ( )
{
char * str1 = fn1 ( 'set' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Global set i sin fil.' ) ;
printf ( '%s \n ' , str2 ) ;
Vend tilbage 0 ;
}
Nu er der to globale funktioner i filen, mainFile.c. Navnene på funktionerne er fn() og main(). dfn() er en global funktion. Det er blevet set i hoved()-funktionen lokalt omfang, ved et opkald. I sproget C omtales en global funktion i det globale omfang, såsom fn(), blot som en funktion. Også den globale funktion, fn1() i filen otherFile.c omtales blot som en funktion.
Hvis de to filer genkompileres til temp.exe, vil udgangen være:
setGlobal set i sin fil.
Bemærk: funktionsdefinitionen for fn() kan også gøres til at blive set i den anden fil, otherFile.c. For at opnå det skal du have sin prototypeerklæring i otherFile.c, som følger:
char * fn ( char * st ) ;slutter med semikolon. Denne aktivitet efterlades som en øvelse for læseren.
Egentlig statisk funktion
Fra ovenstående diskussion kan en funktion ses i ethvert omfang (hvor som helst) i dens fil. Det kan også ses i en anden fil, for det samme program, hvis prototypen er deklareret der. For at forhindre definitionen af filen i at blive set i en anden fil, skal du gøre definitionen statisk ved at foranstille den med det reserverede ord, statisk. Selvom dens prototype er deklareret i den anden fil, vil den stadig ikke blive set i den anden fil. Programfilerne vil ikke engang kompilere. For at illustrere dette, lad indholdet af filen, otherFile.c være:
statisk char * fn1 ( char * stri ) {Vend tilbage stri ;
}
Dette er det samme indhold i filen, otherFile.c, som før, men med det foregående reserverede ord, statisk. Indholdet af mainFile.c-filen forbliver det samme. Hvis der gøres et forsøg på at kompilere programfilerne med kommandoen,
gcc hovedfil. c anden fil. c - den temp. exekompilatoren udsender en fejlmeddelelse, hvilket betyder, at programmet ikke kompilerede. Selvom prototypeerklæringen i den anden fil også er statisk foran, vil programfilerne stadig ikke kompilere.
Konklusion
En funktionsdefinition i C-sproget er en global funktion. Denne funktion kan kaldes (ses) i ethvert omfang i dens fil. For at denne funktion kan ses i en anden fil, såsom hovedfilen, skal dens prototypeerklæring indtastes i den anden fil. For at forhindre denne funktion i at blive set i den anden fil, gør dens definition statisk ved at foranstille den med det reserverede ord, static.