Statiske funktioner i C computersproget

Statiske Funktioner I C Computersproget



'statisk' er et reserveret ord i computersproget, C. Det er en lagringsklassespecifikation, der kan bruges sammen med funktioner. Et C-program kan have mere end én fil. Kun én af filerne skal have C main()-funktionen. I denne artikel tages der kun hensyn til to filer: filen med funktionen C main() som kaldes mainFile.c og den anden fil uden hovedfunktionen som kaldes otherFile.c

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



– Indledning – se ovenfor

– C funktionsprototype

– Global funktion

– Korrekt statisk funktion

– Konklusion

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:

#include

char * fn1 ( char * stri ) ;

int vigtigste ( )
{
char * str = fn1 ( 'set' ) ;
printf ( '%s \n ' , str ) ;

Vend tilbage 0 ;
}

Det begynder med inklusion af -headeren (bibliotek). Dette efterfølges af prototypeerklæringen af ​​funktionen fn() i den anden fil.

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. exe

ved at trykke på Enter-tasten i slutningen af ​​linjen. Outputtet skal være 'set'.

Global funktion

MainFile.c-filen kan ændres som følger:

#include

char * 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:

set

Global 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. exe

kompilatoren 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.