Skrivet av heretic16:
Så oavsett om jag använder static eller icke static, minnet finns kvar trots allt?
Är static samma sak som inline?
Allting beror på vilket scope du deklarerar din variabel, om du deklarerar din variabel på filnivå
int a = 7;
static int d = 8
int foo(){
static int b = 5;
int c = 5;
a++;
b++;
c++;
print("a = %d, b = %d, c = %d\n", a, b, c);
}
int main (){
while(1){
foo();
}
}
Kommer generera:
a = 8, b = 6, c = 6
a = 9, b = 7, c = 6
a = 10, b = 8, c = 6
a = 11, b = 9, c = 6
a = 12, b = 10, c = 6
"a" och "b" beter sig alltså likadant, men "b" kan bara nås inifrån "foo" medans "a" kan nås ifrån alla funktioner i samma fil.
Det som skilljer "a" och "d" är att "a" går att nå ifrån andra filer med "extern int a;" som du t.ex. kan deklarera i header filen.
inline är något helt annat, det har med att kompilatorn sätter in funktionen direkt där den kallas istället för att byta exekverings ställe.