PDA

Visualizza la versione completa : [C] Variabile condivisa da più file


Lasentinella
22-06-2008, 08:30
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 :confused:

Spero di essermi spiegato!

mondobimbi
22-06-2008, 08:48
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.


extern int valore;

Lasentinella
23-06-2008, 18:20
Ah ecco..il fatto è che io ho creato questi 3 semplicissimi file (per provare):

def.h


#ifndef def.h
extern int a;
#endif

A.c


#include<stdio.h>
#include "def.h"
int main(){
int a;
a=5;
sleep(10);
}


B.c


#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"
:oVVoVe:

metal_prog
23-06-2008, 18:28
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

mondobimbi
23-06-2008, 21:51
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

Lasentinella
24-06-2008, 12:09
Ah capito :D Grazie mille ad entrambi per l'aiuto!

:ciauz:

Loading