Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Variables sur differents fichiers d'un même projet
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » lun. 25 janv. 2016 21:11

Bonsoir à tous ,

Je n'arrive pas à comprendre la subtilité de la hiérarchisation des variables et des fonctions dans les différents fichers .c d'un même projet .

Sur mon projet avec l’écran 18FJ , quand j'utilise le logiciel VisualTFT, il me génère plusieurs fichiers en .c (4 pour être exact) et 2 fichiers en .h ( header).

Un fichiers s'appelle Visual_TFT_ecran_main.c , à l’intérieur se trouve la fonction qui surveille le tactile Check_TP(); .
Mais cette fonction se trouve elle même dans un fichier Visual_TFT_ecran_events_code.c , et ca fonctionne .

Quand je créé une variable dans le fichier Visual_TFT_ecran_main.c elle n'est pas reconnue dans les autres .c ?
Je m'y perd complétement dans la gestion entre les fichiers . je dois déclarer les variables en extern ? mais pour les fonctions comment les déclarer ailleurs ?

Merci à vous si vous avez l'habitude de travailler avec plusieurs fichiers dans ce genre et de naviguer entre eux !

PS: Je suis sous MikroC !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Variables sur differents fichiers d'un même projet
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 51
Enregistré en : août 2015
Localisation : Dans l'est de la France

#2 Message par sylvain54 » mar. 26 janv. 2016 08:40

Salut Jeremy,

Je dois t'avouer que j'ai du mal avec visual TFT et visual GLCD. Je trouve l'organisation des fichiers pas clair du tout (ni rationnelle), en tout cas, cela ne correspond pas à ma logique des choses. Je préfère du coup faire sans ces deux logiciels même si cela me prend plus du temps (quoi que ;) ) mais au moins, mes fichiers sont organisés comme je veux et je m'y retrouve :D .
Pour ton histoire de variable, si celle ci est déclarée à l'intérieur d'une fonction, c'est normal que tu ne peux pas t'en servir. Il faut la déclarer en portée globale à l'extérieur de ta fonction (ou dans un autre fichier) ou avec le mot clé extern. Une petite explication du net bien écrite :
Portée :

De même que pour les fonctions, une variable globale à un fichier est par défaut accessible de tout le programme. Ce qui est équivalent à rajouter le mot clé extern.
Au contraire une variable globale déclarée static n'est visible qu'à l'intérieur du fichier.
Les variables globales sont initialisées à la valeur nulle correspondant à leur type.
A l'intérieur d'une fonction, une variable sans static ou extern n'est visible qu'à l'intérieur du bloc et est réinitialisée à chaque entrée dans le bloc. La valeur de cette initialisation est inconnue. Une variable locale masque les variables du même nom ayant une portée plus large : globales ou déclarées dans un bloc englobant.
Si la variable d'un bloc est déclarée static, elle garde sa valeur en permanence.
Enfin, si une variable est déclarée extern, cela signifie qu'elle est définie ailleurs


Normalement, tu peux déclarer tes fonctions dans un autre fichier .c, tu peux très bien faire un fichier par fonction (ou par capteur etc ..., tout dépend comment tu veux organiser ton projet) ou regrouper toutes tes fonctions dans un seul fichier : mes_fonctions.c
Pour y accéder, il faut faire un include dans le main et aussi ajouter mes_fonctions.c dans ton projet à l'aide de l'explorateur de projets.


A ++

Variables sur differents fichiers d'un même projet
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » mar. 26 janv. 2016 09:07

Oui l'organisation fournit par Visual TFT n'est pas folichonne, toutefois, pour moi le gain de temps est appréciable , ne serait que pour les fonts ( taille, gras etc ...) ; et pour les images . Comme je fais une interface graphique, je pense que c'est incontournable . Il faut donc que j'apprenne a décoder lol . Mais l'idéal c'est de servir des fichiers générer et de les copier/coller dans ces propres fichiers.

C'est bien écrit , mais c'est pas tout a fait clair pour moi . Je dois être bizarre et dur de la compréhension :D

Ce qu'ils appellent un fichier c'est un .C ?
Ce qu'ils appellent tout le programme , c'est un ensemble de .C et de .h ?

Donc par exemple si on déclare une variable globale dans un .c, pour pouvoir l’utiliser dans un autre .c il faut l'indiquer dans ce deuxième .ccomme extern car elle à été initialisée ailleurs

Je pense en écrivant ces lignes avoir compris du coup ! :D
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 57 invités