Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Problème d'organisation. (17 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Jfg Ecrit le: Jeudi 21 octobre 2004 à 00:46 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


J'ai des problème très bêtes car je divises mon code en plusieurs fichiers (c'est plus facile de trouver des fonctions quand elles sont groupées).
Questions:
1/Comment on 'static inline' des fonctions qui sont situées dans un fichier .C différent ?
2/J'ai mis mes sprites dans un header, et j'inclus pour l'instant ce header que dans le fichier .C où j'utilise ces sprites, mais je veut pouvoir y accéder à partir d'autre fichiers. Bien entendu j'ai essayer de faire plusieurs '#include' mais j'ai vite compris que c'était très une mauvaise idée...
Comment on résoud ces problèmes ?
-Edité le Jeudi 21 octobre 2004 à 00:46 par jfg-
Kill Mario
    
./Post n°1   Marquer comme non lu.
LionelA Ecrit le: Jeudi 21 octobre 2004 à 00:58 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


normallement au debut de chaque fichier .h on met :
#ifndef MONFICHIER_H
#define MONFICHIER_H

et a la fin du fichier :
#endif /* MONFICHIER_H */

tout ca afin de faire en sorte que le fichier ne soit parcouru qu'une seule fois même s'il est inclus a plusieurs endroits

Pour le 'static inline' j'ai eu le même probleme et je n'ai pas réussi a le résoudre :(

PS : ma prof de programmation systeme (unix) nous dit de mettre _ devant les constantes que l'on définit , comment je peux lui expliquer que c'est pas bien ?
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°2   Marquer comme non lu.
Jfg Ecrit le: Jeudi 21 octobre 2004 à 01:09 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Ça ne marche pas: ça aggrandi la taille de mon programme.

[EDIT] Enorme faute de syntax.
-Edité le Jeudi 21 octobre 2004 à 14:48 par jfg-
Kill Mario
    
./Post n°3   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 21 octobre 2004 à 02:08 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Jfg :
1/Comment on 'static inline' des fonctions qui sont situées dans un fichier .C différent ?

On ne peut pas. Il faut le mettre dans chaque fichier ou dans un header. Et de préférence avec un __attribute__((always_inline)) pour être sûr que c'est vraiment inline, sinon tu risques de te retrouver avec plusieurs copies non-inline de la fonction.

2/J'ai mis mes sprites dans un header, et j'inclus pour l'instant ce header que dans le fichier .C où j'utilise ces sprites, mais je veut pouvoir y accéder à partir d'autre fichiers. Bien entendu j'ai essayer de faire plusieurs '#include' mais j'ai vite compris que c'était très une mauvaise idée...

extern
(Sinon, il y a aussi -fmerge-all-constants comme solution, mais c'est vraiment sale, donc je déconseille cette méthode.)

LionelA :
normallement au debut de chaque fichier .h on met :
#ifndef MONFICHIER_H
#define MONFICHIER_H

et a la fin du fichier :
#endif /* MONFICHIER_H */

tout ca afin de faire en sorte que le fichier ne soit parcouru qu'une seule fois même s'il est inclus a plusieurs endroits

Non. Ça évite que le fichier est inclus plusieurs fois dans la même unité de traduction (le même fichier .c, en gros), mais si on l'inclut dans plusieurs unités de traduction, il sera quand-même inclus plusieurs fois!

PS : ma prof de programmation systeme (unix) nous dit de mettre _ devant les constantes que l'on définit , comment je peux lui expliquer que c'est pas bien ?

       7.1.3  Reserved identifiers

       [#1]  Each header declares or defines all identifiers listed
       in its associated  subclause,  and  optionally  declares  or
       defines  identifiers listed in its associated future library
       directions  subclause  and  identifiers  which  are   always
       reserved  either  for  any  use  or  for  use  as file scope
       identifiers.

         -- All identifiers  that  begin  with  an  underscore  and
            either  an  uppercase  letter or another underscore are
            always reserved for any use.

         -- All identifiers  that  begin  with  an  underscore  are
            always  reserved for use as identifiers with file scope
            in both the ordinary and tag name spaces.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°4   Marquer comme non lu.
Jfg Ecrit le: Jeudi 21 octobre 2004 à 14:51 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Il y a des occasions où on a besoin d'inclure plusieurs fois un header dans la même unité de traduction ?
#confus#
-Edité le Jeudi 21 octobre 2004 à 14:52 par jfg-
Kill Mario
    
./Post n°5   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 21 octobre 2004 à 16:05 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Jfg :
Il y a des occasions où on a besoin d'inclure plusieurs fois un header dans la même unité de traduction ?
#confus#

Si tu as:
#include "a.h"
#include "b.h"

et si les 2 contiennent:
#include <tigcclib.h>
par exemple. On ne veut évidemment pas 2 copies du contenu de tigcclib.h, d'où les "include guards".
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°6   Marquer comme non lu.
Jfg Ecrit le: Jeudi 21 octobre 2004 à 17:27 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Ok.
Kill Mario
    
./Post n°7   Marquer comme non lu.
limmt Ecrit le: Samedi 23 octobre 2004 à 00:44 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


ca serait pas plus simple d'utiliser un seul fichier .c et de mettre les fonctions, les variables globales dans les headers?
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°8   Marquer comme non lu.
Sasume Ecrit le: Samedi 23 octobre 2004 à 12:02 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Une variable gloable ne doit pas être dans un header.
    
./Post n°9   Marquer comme non lu.
limmt Ecrit le: Samedi 23 octobre 2004 à 15:49 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


ben pourtant c'est ce que j'ai toujours fait et ca marche nickel
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°10   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 23 octobre 2004 à 16:10 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Ça peut passer avec certains compilateurs (dont TIGCC 0.95) si ta variable globale n'est pas initialisée, et ça passe évidemment si tu n'as qu'un seul .c, mais c'est quand-même une mauvaise pratique.
extern a été inventé pour ça.

Et cette idée de tout foutre dans un .c avec #include est un hack grossier qui n'est plus nécessaire avec TIGCC 0.95. (Ça n'apporte plus rien avec le nouveau linker.)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°11   Marquer comme non lu.
limmt Ecrit le: Samedi 23 octobre 2004 à 16:27 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


et si jinitialise ma vairable directememnt ca marche aussi
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°12   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 23 octobre 2004 à 17:17 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Avec un seul .c oui, mais utiliser un seul .c et tout mettre dans des headers est une manière de coder vraiment sale.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°13   Marquer comme non lu.
limmt Ecrit le: Samedi 23 octobre 2004 à 20:38 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


je met pas tout dns les headers je laisse quand meme des trucs dans le .c
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°14   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 23 octobre 2004 à 20:47 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Mais tu devrais mettre tout ce qui est code, variables etc. dans des .c compilés séparément et mettre seulement les déclarations dans le header.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°15   Marquer comme non lu.
Invité Ecrit le: Jeudi 28 octobre 2004 à 09:18 Déconnecté(e)    
 
et les inline dans les headers #roll#
    
./Post n°16   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 28 octobre 2004 à 19:34 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Inline sux... :D
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°17   Marquer comme non lu.
Invité Ecrit le: Vendredi 29 octobre 2004 à 09:44 Déconnecté(e)    
 
mé biensur #roll#
codeur a la noix :D
    
  :: Index » Forum Ti68K » Programmation C » Problème d'organisation. (17 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 75.11ms avec 20 requetes