Design en C

Design en C - C - Programmation

Marsh Posté le 14-04-2005 à 14:52:53    

bonjour  [:maxxxxxx]  
 
Je sai que parler de design en C c'est un peu comme de parler d'acceleration a propos d'une deux chevaux, mais en fait je voulais juste savoir si j'etais le seul a faire ca, et ske vous en pensez. Bon, en C, vous le savez il y a qu'un global scope et tout va dedans. Venant du C#/C++, ca me saoule un peu paske je trouve ca tout caca, surtout quand vous voulez faire des constantes, fo tjs esperer que personne a pas deja coller un #define identique quelque part, idem pour les fonctions ou alors fo prefixer a mort, etc etc.  
Bref, ca manque de namespace, cette histoire. Un peu de separation dans le code, quoi ! Zyva.
 
Donc vala ce que je fais depuis peu pour tacher de demeler un peu le bordel :
 
 
truc.h :

Code :
  1. extern const struct _Truc {
  2. const char * maconstante;
  3. struct {
  4.  const char *Paul;
  5.  const char *Roger;
  6.  }Machin;
  7. }Truc;


 
Et doncques dans truc. :

Code :
  1. const struct _truc = {
  2. {
  3.  "maconstante",
  4.  {
  5.   "Paul",
  6.   "Roger"
  7.  }
  8. }
  9. };


Et doncques ailleurs dans le code on peut savamment faire :

Code :
  1. printf("%s\n",Truc.maconstante);


 
ce que je trouve assez superbe
 
Notez, ca marche aussi avec des fonctions
 
 
Yop.h:

Code :
  1. extern const struct _Yop {
  2.    int (*toto)(int a);
  3. }Yop;


 
 
Yop.c:

Code :
  1. static int toto(int a) {
  2. ..
  3. }
  4. const struct Yop = {toto};


(pour les raleurs habituels : non je pense pas avoir inventé qqchose, non je trouve pas ca laid, je trouve meme ca passablement pas mal, tant qu'on abuse pas dans les struct { struct { struct {)


Message édité par chrisbk le 14-04-2005 à 14:53:41

---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 14-04-2005 à 14:52:53   

Reply

Marsh Posté le 14-04-2005 à 14:53:28    

C'est l'anniversaire de qui ?


---------------
Moi, j'aime pas les signatures - J'écoute actuellement :
Reply

Marsh Posté le 14-04-2005 à 14:54:05    

stfu noob


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 14-04-2005 à 14:57:42    

et d'ailleurs tu serais bien inspiré de foutres des:

Code :
  1. const char const* conconst;

Reply

Marsh Posté le 14-04-2005 à 14:58:42    

d'ailleurs quoi ? [:pingouino]
 
je note la suggestion mon cher jean louis [:pingouino]


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 14-04-2005 à 15:00:39    

AH AH je t'ai bien eu [:pingouino]

Reply

Marsh Posté le 14-04-2005 à 15:01:25    

damned, je suis demasqué [:pingouino]
mais je reviendrais [:pingouino]


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 14-04-2005 à 16:59:03    

je tenais a dire que les choux de bruxelles en sauce charbon a clou, ca remise la planche dans l'attribut cartésien [:icon3]


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 14-04-2005 à 17:18:53    

chrisbk a écrit :


 
Je sai que parler de design en C c'est un peu comme de parler d'acceleration a propos d'une deux chevaux, mais en fait je voulais juste savoir si j'etais le seul a faire ca, et ske vous en pensez. Bon, en C, vous le savez il y a qu'un global scope et tout va dedans. Venant du C#/C++, ca me saoule un peu paske je trouve ca tout caca, surtout quand vous voulez faire des constantes, fo tjs esperer que personne a pas deja coller un #define identique quelque part, idem pour les fonctions ou alors fo prefixer a mort, etc etc.  
Bref, ca manque de namespace, cette histoire. Un peu de separation dans le code, quoi ! Zyva.


Je préfère séparer la défintion de la structure (qui peut resservir) et la declaration de la globale. C'est plus clair (et chez moi, ça rentre pas dans les même cases...)
 
Un exemple qui compile...


/* famille.h */
 
/* structure  */
struct famille
{
   const char *nom;
 
   struct
   {
      const char *papa;
      const char *maman;
   }
   parents;
};
 
/* globale */
extern const struct famille Famille;



/* famille.c */
#include "famille.h"
 
/* globale initialisee */
const struct famille Famille =
{
   "Dugland",
   {
      "Paul",
      "Paulette",
   },
};



#include <stdio.h>
 
#include "famille.h"
 
int main (void)
{
   printf ("%s\n", Famille.nom);
   printf (" %s\n", Famille.parents.papa);
   printf (" %s\n", Famille.parents.maman);
 
   return 0;
}


Message édité par Emmanuel Delahaye le 15-04-2005 à 08:34:24

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-04-2005 à 13:31:36    

C'est rigolo, comme idée, ca. J'essaierai de le coller dans mon prochain projet C, au moins pour les constantes :) (les fonctions la dedans, c'est ptet un peu lourd, non ?)
Inconvénient : comme tu dis, faut pas abuser sur l'imbrication des structures, vu qu'on est obligé de taper la totalité, après :P

Reply

Marsh Posté le 15-04-2005 à 13:31:36   

Reply

Marsh Posté le 15-04-2005 à 18:40:43    

bin les fonctions bof, ca va. Ca permet tjs de regrouper, ou si jamais tu as des "données" associées a la fonction, ca permet de regrouper
 
le plus moche ca reste l'initialisation de la structure dans le .c


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 15-04-2005 à 20:53:00    

chrisbk a écrit :


je trouve ca tout caca, surtout quand vous voulez faire des constantes, fo tjs esperer que personne a pas deja coller un #define identique quelque part


 
Yaka mettre directement les nombres magiques dans le code.

Reply

Marsh Posté le 15-04-2005 à 20:54:55    

[:pingouino]


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 15-04-2005 à 21:02:29    

Pourquoi, moche ?

Reply

Marsh Posté le 15-04-2005 à 21:02:37    

Erreur 764 ? :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed