Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 24
  1. #11
    ok capito

    dankissime
    Se non fosse nato il c++, il mio intelletto sarebbe ancora oscuro a molti...

  2. #12
    Utente di HTML.it L'avatar di belele
    Registrato dal
    Oct 2001
    Messaggi
    24
    Originariamente inviato da Andrea Simonassi


    No, una variabile (o funzione) globale static ha lo scope limitato al solo file sorgente in cui si trova. Questo secondo lo standard, se poi un compilatore si comporta diversamente, non è un compilatore standard.

    lo scope di una varibile globale è sempre un exe o una dll, per superare il problema che dici riguardo la compilazione la tecnica (standard) è questa:

    mettere la variabile globale nel file A
    const int a = 0;
    nel file B invece si usa la extern
    extern const int a;

    poi si linkano assieme i due file ed essi vedono, e possono usare, la stessa variabile (naturalmente non è obbligatorio che sia const)

    ciao
    :adhone: :adhone: :adhone:
    sòio mi !!!!!!!!!!!!!!

    Uno dei segreti della felicità è la cattiva memoria

  3. #13
    Infatti 'static' non ci va! Se dichiari una variabile globale 'static' all'interno di un modulo e poi inserisci il riferimento 'extern' in un altro modulo, beh, il linker non vedrà quella variabile, e proprio a causa di 'static'. Provare per credere.

    Ciao.

  4. #14
    Se vuoi definire una costante globale utilizzi:
    #define NOMECONST value[F,L,D,...]
    #define MAX 100L in questo caso 100 è un long
    iloiacorb

    VB5, vb6, Java, C/C++, SQL, ACCESS, ORACLE, ASP, AUTOCAD, DBCAD, winME, 9x, 2000, Assembly 8086, 8051

  5. #15
    C'è una bella differenza fra simboli e costanti. Ho risposto su questo argomento in un topic di cui però non ricordo il titolo. Se vuoi ricerca fra i threads recenti, così ti chiarisci un po' le differenze.

    Ciao.

  6. #16
    Utente di HTML.it L'avatar di belele
    Registrato dal
    Oct 2001
    Messaggi
    24
    Originariamente inviato da iloiacorb
    Se vuoi definire una costante globale utilizzi:
    #define NOMECONST value[F,L,D,...]
    #define MAX 100L in questo caso 100 è un long
    per le costanti è meglio usare le variabili normali aggiungendo const così il compilatore fa il controllo dei tipi


    ciao
    :adhone: :adhone: :adhone:
    sòio mi !!!!!!!!!!!!!!

    Uno dei segreti della felicità è la cattiva memoria

  7. #17
    Utente di HTML.it L'avatar di belele
    Registrato dal
    Oct 2001
    Messaggi
    24
    Originariamente inviato da r0x
    Infatti 'static' non ci va! Se dichiari una variabile globale 'static' all'interno di un modulo e poi inserisci il riferimento 'extern' in un altro modulo, beh, il linker non vedrà quella variabile, e proprio a causa di 'static'. Provare per credere.

    Ciao.
    non capisco quello che dici usare static in una variabile globale è inutile non sbagliato

    io static la uso solo all'interno di classi, ma se volessi fare una varibile glabel static non capisco perchè il compilatore+linker me lo dovrebbero impedire?

    ciao
    :adhone: :adhone: :adhone:
    sòio mi !!!!!!!!!!!!!!

    Uno dei segreti della felicità è la cattiva memoria

  8. #18
    Originariamente inviato da belele


    non capisco quello che dici usare static in una variabile globale è inutile non sbagliato

    io static la uso solo all'interno di classi, ma se volessi fare una varibile glabel static non capisco perchè il compilatore+linker me lo dovrebbero impedire?

    ciao
    :adhone: :adhone: :adhone:
    Te lo impedirebbero perchè tu hai esplicitamente dichiarato di non volere rendere tale variabile visibile a tutti usando la keyword static.

    Se non vuoi avere impedimenti non usare 'static' nelle variabili globali, infatti per default il C/C++ non impedisce l'accesso a chiunque delle variabili globali.

  9. #19
    Utente di HTML.it L'avatar di belele
    Registrato dal
    Oct 2001
    Messaggi
    24
    Originariamente inviato da Andrea Simonassi


    Te lo impedirebbero perchè tu hai esplicitamente dichiarato di non volere rendere tale variabile visibile a tutti usando la keyword static.

    Se non vuoi avere impedimenti non usare 'static' nelle variabili globali, infatti per default il C/C++ non impedisce l'accesso a chiunque delle variabili globali.
    Io non uso static per le variabili globali (lo uso solo sulle variabili di alcune classi)

    però non avevo mai sentito che static serva ad impedire l'accesso,
    dove l'hai letto?

    per quello che sò static serve per non far morire la variabile alla fine dello scope

    ciao
    :adhone: :adhone: :adhone:
    sòio mi !!!!!!!!!!!!!!

    Uno dei segreti della felicità è la cattiva memoria

  10. #20
    Allora ho capito che vuoi dire: se dichiari static una variabile all'interno di una funzione => serve a non far morire una variabile tra una chiamata e l'altra (quello che hai detto tu).

    Se invece dichiari static una variabile globale => il suo scope è globale limitatamente al modulo in cui viene compilata.

    Ma parlavamo di due cose diverse .

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 © 2026 vBulletin Solutions, Inc. All rights reserved.