Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
805 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Déclarer des variables dans un fichier externe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Déclarer des variables dans un fichier externe

n°899824
GROFRED
Posté le 16-11-2004 à 14:49:14  profilanswer
 

Je cherche à établir un programme le plus modulaire possible. J'ai déclaré mes fonctions dans "ma_librairie.h" et de même j'aimerais créer un fichier "mes_declarations.jesaispasquoi" où je pourrais regrouper l'ensemble de mes déclarations de variables, ceci pour alléger mon programme principal car j'ai une grande quantité de variables à déclarer. Comment puis-je faire cela?
 
J'ai essayé d'écrire un "mes_declarations.h" avec dedans  
 
const double var1;
...
const double vari;
...
const double varn;
 
mais ça compile pas.


Message édité par GROFRED le 16-11-2004 à 14:52:28
mood
Publicité
Posté le 16-11-2004 à 14:49:14  profilanswer
 

n°899848
couak
Posté le 16-11-2004 à 15:21:54  profilanswer
 

Code :
  1. #include "mes_declarations.h"

n°899850
couak
Posté le 16-11-2004 à 15:22:27  profilanswer
 

enfin d'après mes souvenirs ! je commence à avoir un doute

n°899851
HelloWorld
Salut tout le monde!
Posté le 16-11-2004 à 15:23:09  profilanswer
 

Utilise extern dans le .h, et crée un .c avec tes variables.
Les variables globales c'est _mal_. Tu cherches à décomposer en modules, mais avec ton gros fichier de variables globales tu obtiens un couplage fort et donc de modulaire ça en a que l'aspect.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°899911
GROFRED
Posté le 16-11-2004 à 16:31:08  profilanswer
 

Si les var globales c'est mal, comment faire alors pour éviter d'avoir 100 lignes de déclarations dans le fichier principal?
 
Autre problème: Ce programme est destiné à être utilisé par un quidam qui doit pouvoir utiliser le programme en changeant ces variables, mais ne doit pas avoir accès au source. Or si je déclare les très nombreuses variables utilisées par le programme en local, l'utilisateur doit disposer de la source pour les changer et donc voir le source ce que je ne souhaite pas. Je ne vois pas l'utilisateur rentrer le programme en ligne de commande avec 100 paramètres! J'imaginais plus simplement que l'utilisateur puisse éditer les variables dans un fichier externe sans avoir accès au code...
 
:-(

n°899916
HelloWorld
Salut tout le monde!
Posté le 16-11-2004 à 16:33:00  profilanswer
 

Et initialiser ces variables à partir d'un fichier texte lu par ton appli c'est pas possible ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°899949
GROFRED
Posté le 16-11-2004 à 17:10:02  profilanswer
 

du style:
 
fscanf(fichier,"%f",&variable)...
 
Mouais j'imagine que ça peut le faire comme ça mais bon j'ai pas lu bcp de bien de fscanf et puis il faut identifier dans le fichier texte formaté la chaine de caractère correspondant à la variable et récupérer la valeur derrière. Ca doit pouvoir se faire mais je vois ça compliqué...

n°899952
couak
Posté le 16-11-2004 à 17:13:47  profilanswer
 

ca ne l'est pas
et puis de tte manière avec l'histoire des headers l'utilisateur n'aurait pas pu modifier les paramètres (à moins de recompiler l'appli)

n°899982
HelloWorld
Salut tout le monde!
Posté le 16-11-2004 à 17:34:07  profilanswer
 

Utilise fgets & sscanf.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°899986
GROFRED
Posté le 16-11-2004 à 17:38:25  profilanswer
 

OK mais le fichier d'entrée du prog doit être bien formaté du style:
 
fichier de données "donnees.dat"
 
nomvar1: var1
 
je suppose que l'acquisition de var1 s'écrirai dans le programme principal comme ça:
 
fscanf("donnees.dat","%f",&nomvar1)
 
Mais comment ça va réagir du fait de la présence du nom de la variable devant sa valeur? Je vais chercher des trucs sur l'acquisition de données dans un fichier. Merci ça me paraît plus clair maintenant. Au fait, est-ce que "fget" est mieux que "fscanf"?


Message édité par GROFRED le 16-11-2004 à 17:39:26
mood
Publicité
Posté le 16-11-2004 à 17:38:25  profilanswer
 

n°899997
HelloWorld
Salut tout le monde!
Posté le 16-11-2004 à 17:48:12  profilanswer
 

Ben ça va essayer de convertir la valeur... Tu peux utiliser %*s pour ignorer un champ, mais le mieux est de lire et tester le nom de la valeur afin de valide le fichier entré.
Utilise fgets & sscanf et non fscanf.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°900288
matafan
Posté le 16-11-2004 à 23:38:54  profilanswer
 

D'abord, notes que tu confond declaration et definition. Ce que tu as fait dans ton .h ce sont des definitions de variables, et ce n'est jamais une bonne idee de faire ca dans un .h.
 
Si tu veux faire les choses proprement, il te faut (les noms de fichier c'est pour l'exemple, appeles-les comme tu veux) :
 

  • Un declaration.h ou tu declare tes variables avec "extern" (extern const double var2;)
  • Un definition.c ou tu definit tes variables (const double var1 = ...;)
  • Un fichier code.c ou tu met ton code. Ce fichier inclue declaration.h


Ensuite tu compiles definition.c, tu compiles code.c, et tu link les deux.
 
declaration.h :

Code :
  1. extern const double var1;
  2. extern const double var2;


definition.c :

Code :
  1. const double var1 = 1.0;
  2. const double var2 = 2.0;


code.c :

Code :
  1. #include <stdio.h>
  2. #include "declaration.h"
  3. int
  4. main()
  5. {
  6.         printf("var1 = %f\n", var1);
  7.         printf("var2 = %f\n", var2);
  8. }


Puis :

/home/nicolas/tmp% gcc -o appli definition.c code.c
/home/nicolas/tmp% ./appli  
var1 = 1.000000
var2 = 2.000000


 
Edit : y'a une phrase qui n'etait pas finie.


Message édité par matafan le 17-11-2004 à 16:14:49
n°900455
GROFRED
Posté le 17-11-2004 à 11:11:15  profilanswer
 

merci pour vos contribution!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Déclarer des variables dans un fichier externe

 

Sujets relatifs
Inclure un fichier binaire (dll) ?!Besoin de rapidité - comparaison - fichier & requetes
comment uploader un fichier sur un autre pc en localEvaluer le texte d'un fichier comme du code C.
ouverture d'un fichier BMPLocaliser un fichier de configuration
VBS :: Do while 'si le fichier existe pasrecheche une api pour lire un fichier par la fin
probleme d'espaces dans mon nom de fichierFichier Son
Plus de sujets relatifs à : Déclarer des variables dans un fichier externe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR