Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Domanda su variabili globali

    Salve,
    leggendo un po' per internet ho letto che:

    variabile globale static è visibile solo all'interno del file in cui è dichiarata.
    variabile globale extern è visibile anche da altri file.

    Se ciò che ho percepito è giusto mi domando: una variabile globale deve essere necessariamente dichiarata o static o extern o può anche essere dichiarata semplicemente senza uno dei due modificatori? Se può essere dichiarata anche senza uno dei modificatore, quale è il suo ruolo?

    Grazie
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  2. #2
    Allora...approfondendo forse dovrebbe essere cosi:

    Esempio 1

    file f1.c
    Codice PHP:
    static int a;  //la variabile globale a è visibile solo a tutte le funzioni del file f1.c 

    Esempio 2
    file f1.c
    Codice PHP:
    int a;  // la variabile globale a può essere visibile anche alle funzioni di altri file 
    file f2.c
    Codice PHP:
    extern int a;  //uso la variabile dichiarata nel file f1.c
    ...
    int i;
    i=a;
    ... 
    Potreste confermarmi la correttezza di questo?

    grazie
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  3. #3

  4. #4
    Originariamente inviato da cristal
    Potreste confermarmi la correttezza di questo?
    È corretto; l'uso di static in questo contesto fa sì che il compilatore non scriva nel file oggetto dato in output le informazioni sulla variabile in questione, dato che si è specificato che essa non deve essere accessibile da altri moduli. Se invece static non viene specificato il compilatore inserisce nel file oggetto generato le informazioni necessarie al linker per risolvere i riferimenti a tale variabile degli altri moduli oggetto. Tali riferimenti non risolti al momento della compilazione vengono infatti generati dal compilatore quando in un sorgente il codice fa riferimento ad una variabile dichiarata come extern; il compilatore in questa situazione lascia i riferimenti non risolti segnalando al linker che dovrà sistemare lui la faccenda.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.