static vs extern variablen



  • Hallo,
    ich habe eine sehr "spitzfindige" frage!
    und zwar möchte ich wissen wo der unterschied liegt zwischen:
    -einer static variable die auf modulebene definiert ist (also implizit extern)
    -ener gewöhnlichen auf modulebene definierte externen variable (explizit als extern gekennzeichnet bzw. keine explizite bezeichnung)

    liegt der unterschied vielleicht darin, das die static variable nur modulglobal während die "richtige" externe programmglobal ist.
    besten dank
    mfg felix



  • die extern Variable ist woanders definiert und daher in wenigstens 2 Modulen zugänglich



  • danke erstmal,
    aber ich habe ja gerade gemeint wenn ich sie an der selben position definiere (z.b. über der main fkt wo die #define usw. stehen) wo ist der unterschied?



  • static int a; /* definiert die nur in dieser Übersetzungeinheit sichtbare int-Variable a und initialisiert sie mit 0 */
    int b; /* definiert die potentiell überall sichtbare int-variable b und initialisiert sie mit 0 */
    ...
    extern int b; /* "importiert" die in einer anderen Übersetzungseinheit als überall sichtbar (nicht static!) deklarierte Variable b */
    

Anmelden zum Antworten