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

    [C] Variabile condivisa da più file

    Ciao,
    ho due file A.c e B.c che utilizzano una stessa variabile int.
    Questa variabile è definita nel file def.h e ho bisogno che, cambiandone il valore in A.c, questo venga cambiato anche quando viene utilizzata da B.c (tenendo conto che eseguo A.c e B.c insieme..parte il main di A e, mentre ancora esegue, parte quello di B).
    Teoricamente non dovrebbe avvenire in automatico utilizzando una variabile definita a parte? E invece non succede

    Spero di essermi spiegato!

  2. #2
    devi usare il modificatore extern .
    Questa variabile deve essere definita una sola volta, all'esterno delle funzioni e dichiarata in ogni funzione che la voglia utilizzare.
    codice:
    extern int valore;

  3. #3
    Ah ecco..il fatto è che io ho creato questi 3 semplicissimi file (per provare):

    def.h
    codice:
    #ifndef def.h
    extern int a;
    #endif
    A.c
    codice:
    #include<stdio.h>
    #include "def.h"
    int main(){
    int a;
    a=5;
    sleep(10);									   
    }
    B.c
    codice:
    #include<stdio.h>
    #include "def.h"
    int main(){
    int a;
    printf("A:%d\n",a);
    Faccio partire su un terminale A.c e subito dopo su un altro terminale B.c...risultato: in B ottengo "A:-1080680248"
    VVoVe:

  4. #4
    Perché sono due programmi diversi... dove ognuno ha una variabile chiamata a di tipo intero...

    due programmi = due aree di memoria diverse

    devi far comunicare i due programmi non puoi fare come hai fatto tu
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  5. #5
    la comunicazione tra processi non è cosa semplicissima, specialmente se si è alla prime armi.
    Forse semplicemente ti confondi, nel tuo progetto devi avere un solo main, sebbene il progetto possa essere composto di un numero qualsiasi di file, sia sorgenti che include.
    Una variabile extern nel tuo progetto avrà un valore unico in tutte le parti che costituiscono il tuo progetto.
    ciao
    sergio

  6. #6
    Ah capito Grazie mille ad entrambi per l'aiuto!


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.