Déclarer des variables dans un fichier externe - C - Programmation
Marsh Posté le 16-11-2004 à 15:22:27
enfin d'après mes souvenirs ! je commence à avoir un doute
Marsh Posté le 16-11-2004 à 15:23:09
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.
Marsh Posté le 16-11-2004 à 16:31:08
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...
:-(
Marsh Posté le 16-11-2004 à 16:33:00
Et initialiser ces variables à partir d'un fichier texte lu par ton appli c'est pas possible ?
Marsh Posté le 16-11-2004 à 17:10:02
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é...
Marsh Posté le 16-11-2004 à 17:13:47
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)
Marsh Posté le 16-11-2004 à 17:34:07
ReplyMarsh Posté le 16-11-2004 à 17:38:25
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"?
Marsh Posté le 16-11-2004 à 17:48:12
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.
Marsh Posté le 16-11-2004 à 23:38:54
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) :
Ensuite tu compiles definition.c, tu compiles code.c, et tu link les deux.
declaration.h :
Code :
|
definition.c :
Code :
|
code.c :
Code :
|
Puis :
/home/nicolas/tmp% gcc -o appli definition.c code.c |
Edit : y'a une phrase qui n'etait pas finie.
Marsh Posté le 16-11-2004 à 14:49:14
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