RISOLTO [C] Variabili Globali per file .c e .h

Luc1

Nuovo Utente
101
15
CPU
Ryzen 5 2600
Dissipatore
Stock
Scheda Madre
Asrock B450m pro4
HDD
Samsung 970 EVO, Samsung 850 EVO, WD BLUE
RAM
Corsair vengeance kit 16 GB cl15 3000
GPU
Msi GeForce 1660 TI ventus
Monitor
AOC 24G2
PSU
Cooler master masterwatt 550
Case
Corsair cabride 275R
Periferiche
Corsair harpoon RGB, Corsair K55 RGB
Net
TIM Fttc 100/20 Mbit
OS
Windows 10 home
Salve sto preparando un progetto per il mio esame di programmazione, il mio progetto si compone di 4 file .c ( 1 Main, 3 functions) e 3 file .h che contengono solo i prototipi delle 3 functions.
Il programma e le funzioni gestiscono un array 2D e due array 1D; ecco io vorrei definire delle variabili globali utilizzabili da tutti i file .c del progetto.
In pratica vorrei definire 3 variabili globali che rappresentino rispettivamente le righe e colonne massime per l'array 2D e la grandezza massima di quello 1D.
Inoltre vorrei utilizzare queste variabili nelle dichiarazioni delle function e nei loro prototipi , questo per far cambiare semplicemente le variabili di input senza andare in ogni file .c e .h .

Ad esempio ho una funzione che visualizza l'array 2D :
Codice:
void visul (int a [][Y])
{
 *ciclo for etc*
*printf etc*
}
Ecco Y sarebbe la mia variabile globale.
Si può inserire Y anche nei prototipi dei file .h ? O vado incontro a problemi ?
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Tali variabili vanno qualificate come extern, che appunto dice che queste sono definite altrove (in un'altra translation unit) ma dichiarate​ nella presente.
 
  • Mi piace
Reazioni: Luc1

Luc1

Nuovo Utente
101
15
CPU
Ryzen 5 2600
Dissipatore
Stock
Scheda Madre
Asrock B450m pro4
HDD
Samsung 970 EVO, Samsung 850 EVO, WD BLUE
RAM
Corsair vengeance kit 16 GB cl15 3000
GPU
Msi GeForce 1660 TI ventus
Monitor
AOC 24G2
PSU
Cooler master masterwatt 550
Case
Corsair cabride 275R
Periferiche
Corsair harpoon RGB, Corsair K55 RGB
Net
TIM Fttc 100/20 Mbit
OS
Windows 10 home
Tali variabili vanno qualificate come extern, che appunto dice che queste sono definite altrove (in un'altra translation unit) ma dichiarate​ nella presente.
Grazie mi sono documentato a riguardo ed ho risolto ponendo extern le variabili globali in ogni .c e .h ; ovviamente sbagliavo a dichiarare i valori in più di un file .c e mi andava in errore di ridefinizione.
Poi ho capito(dopo un bel po) che i valori andavano definiti una vokra sola ed in un solo dei file.
 

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
CIao,
posta il codice funzionante per favore, potrebbe servire a qualche utente del web che ha avuto la tua stessa problematica.
 
  • Mi piace
Reazioni: Mursey

Luc1

Nuovo Utente
101
15
CPU
Ryzen 5 2600
Dissipatore
Stock
Scheda Madre
Asrock B450m pro4
HDD
Samsung 970 EVO, Samsung 850 EVO, WD BLUE
RAM
Corsair vengeance kit 16 GB cl15 3000
GPU
Msi GeForce 1660 TI ventus
Monitor
AOC 24G2
PSU
Cooler master masterwatt 550
Case
Corsair cabride 275R
Periferiche
Corsair harpoon RGB, Corsair K55 RGB
Net
TIM Fttc 100/20 Mbit
OS
Windows 10 home
CIao,
posta il codice funzionante per favore, potrebbe servire a qualche utente del web che ha avuto la tua stessa problematica.
Hai perfettamente ragione,ho fatto come segue:
Nel mio main.c ho dichiarato nel pre processore quanto segue
Codice:
#include <stdio.h>
#include <stdlib.h>
Extern int X,Y,ELE;
Int ELE=50;
Int X=30;
Int Y=30;

Int Main (){

Return 0;
};
Poi nel pre processore di ogni file C e H:
Codice:
#include <fuffa.h>

Extern int *variabile da utilizzare*
l'importante è definirle in un solo file , per non incorrere in errori di ridefinizione.
In questo modo le istruzioni seguenti sanno che il valore di quella variabile va cercato al di fuori nel blocco di memoria deposto a contenere le variabili Extern.
 
  • Mi piace
Reazioni: Geca89

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili