Mylib.h est une librairie contenant les fichiers includes nécéssaires

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 969 fois - Téléchargée 26 fois

Contenu du snippet

Pour ne plus m'encombrer avec les includes j'ai créer une
librairie Mylib.h personnalisée que je réenrichi
au fur et à mesure de mes programmations.

Source / Exemple :


/* Mylib.h --- MARTENS -- Version du 22-03-2002 */

   #define MAX_CAR   175
  #define DERNIERE_LIGNE 25
  #ifdef F1
     #error les symboles F1 à F10, HOME, END et ESC font partie de MYLIB.H
  #endif
  enum {LOW_VALUE=0x00, HOME, END, FLECHE_G, FLECHE_D, DEL, FLECHE_H=23, FLECHE_B,
        ENTER=0xD, ESC=0x1B,  F1=176, F2, F3, F4, F5, F6, F7, F8, F9, F10};
  #define INVERSE   0
  #define SOULIGNE  1
  #define HIGHLIGHT 3
  #define LOWLIGHT  4
  #define BIP_SONORE 5
  enum { NOIR = 0,BLEU=1, VERT=2, CYAN=3, ROUGE=4, MAUVE=5, JAUNE=6, BLANC=7};
  #define blank  ' '
  #define blank0 '\0'
  #define barre '/'
  #define TRUE 1
  #define FALSE 0

  typedef struct{
     int debut;
     int fin;
  }Split; 
  
  typedef struct{
    int jour;
    int mois;
    int annee;  
  } ddate;

  void randomize ();
  void gotoxy         (int x, int y);
  void Text_Color     (short int avant_plan,short int arriere_plan);
  void Get_Color_Text (int *color);
  struct tm gettime ();
  void colorie_nombre (const double nombre,int avant_plan,int arriere_plan,int ligne,int col,int longueur,int fract);
  void colorie_texte  (const char *chaine, int avant_plan,int arriere_plan,int ligne,int col);
  void mycls  (int arriere_plan);
  void mycls2 (int avant_plan, int arriere_plan);
  void lower_texte (char * chaine);
  char *upper_texte (char *);
  void myclrscr();

  void randomize(){
    srand (time (NULL));
  }

  void gotoxy(int x, int y){
    COORD CO;
    CO.X = x - 1;
    CO.Y = y - 1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),CO);
  }//end procedure

  void Text_Color(short int avant_plan,short int arriere_plan){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(unsigned short int)( avant_plan + (arriere_plan * 16)));
  }//end procedure

  void myclrscr(){
    system("cls");
  }//end procedure

  void Get_Color_Text(int *color){
    CONSOLE_SCREEN_BUFFER_INFO Text_Attibutes;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &Text_Attibutes);

  • color = Text_Attibutes.wAttributes;
}//end void struct tm gettime (){ time_t ltime ; ltime = time (NULL); return (*localtime(&ltime)); }//end struc void mycls (int arriere_plan){ int Ta_couleur[] = {15, 31, 47, 63, 79, 95, 224, 240}; unsigned long x; COORD CO = {0, 0}; FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), (WORD)Ta_couleur [arriere_plan],2000,CO,&x); FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), 0x20,2000,CO,&x); }//end void void mycls2 (int avant_plan, int arriere_plan){ unsigned long x; COORD CO = {0, 0}; FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), (WORD)( avant_plan + arriere_plan * 16),2000,CO,&x); FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), 0x20,2000,CO,&x); }//end void void colorie_texte (const char *chaine, int avant_plan, int arriere_plan, int ligne, int col){ int color_depart; //Get de la couleur initiale Get_Color_Text(&color_depart); //etablissement de la couleur du texte A afficher textcolor(avant_plan); textbackground(arriere_plan); gotoxy(ligne, col); cprintf( "%s", chaine ); //retablissement de la couleur initiale SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(unsigned short) color_depart); }//end void void colorie_nombre (const double nombre, int avant_plan, int arriere_plan, int ligne, int col, int longueur, int frac){ int color_depart; Get_Color_Text(&color_depart); Text_Color((short int)avant_plan, (short int)arriere_plan); gotoxy(ligne, col); printf ("%*.*f", longueur, frac, nombre ); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(unsigned short int) color_depart); }//end void void lower_texte (char * chaine){ int i; for (i = 0; chaine [i] != '\0'; i++) chaine [i] = tolower (chaine[i]); }//end void char * upper_texte (char * chaine){ int i; for (i = 0; chaine [i] != '\0'; i++) chaine [i] = toupper (chaine[i]) ;//end for return chaine; }//end function

Conclusion :


Vous pouvez vous-même compléter ce fichier ou le modifier
suivant vos besoin avec d'autre fichiers Include de référence
suivant les codes que vous programmez.

A voir également

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
ben, c'est syntaxiquement correct ... les extensions, c'est une histoire de convention. d'ailleurs les en-têtes standards std du C++ ne portent pas d'extension du tout ...
mickbad
Messages postés
76
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
20 avril 2008
-
> En quoi le fonctionnement d'un EDI est-il différent
Je disais ça dans le sens (clair comme la bouse de vache :) qu'il est toujours possible de tromper l'éditeur en incluant un .cpp plutôt qu'un .h
Absurde mais possible; TurboC++, C++Builder le permettent bien (les autres très certainement mais je ne me disperse plus trop dans ce domaine ;D juste cygwin, dev-cpp, borland, lccwin32, hihi)

m'enfin :)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
Soit dit en passant, c'est pas grave hmm ^^. Les premiers codes postés, c'est souvent un peu par erreur, on débute et donc on ne sait pas trop ce qui a de l'intérêt ou pas (j'aurais honte que t'ailles voir mes premiers codes ^^). Simplement ici, c'est pas du code intéressant, voilà tout, c'est pas un drame.
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
"Je crois savoir comment tu programmes : tu compiles tout en même temps via ton éditeur. Maintenant pense à un programme compilé avec gcc ou mingw avec plein de fichiers .cpp ou .c (ça revient au même). Chaque fichier source fait appel à ton Mylib.h. Le principe du Makefile est de compiler chaque source indépendamment puis de les assembler en un fichier binaire."

En quoi le fonctionnement d'un EDI est-il différent? Ton EDI, il se contente de générer un makefile et d'en appeler l'exécution par un programme tiers (GCC make dans le cas de dev-cpp, ou le make de microsoft dans le cas de VC++, ou, ou, ou ...).

Ceci dit, ce code ne sert vraiment à rien (de un), il est incorrect (de deux), et c'est une mauvaise pratique (de trois).

Incorrect, parce que le me fait penser que tu codes en C++, or en C++ correct tu aurais dû écrire ceci:

#include <cstdio>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <cstring>
#include <dos.h>
#include <windows.h>
#include

tout simplement.

Et un librairie c'est pas un fichier .h avec des includes :).
excrt
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2006
-
- autre chose

//----------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <errno.h>
//#include <graphics.h>
#include <time.h>
#include <string.h>
#include <dos.h>
//#include "stdafx.h"
#include <windows.h>
#include <winbase.h>
#include // <<<<<<<<< C'EST DU C++
//----------------------------------------
//- DONC:
//----------------------------------------
#include <cstdio> // C<stdio.h> - C++<cstdio>
#include <cstdlib> // C<stdlib.h> - C++<cstdlib>
#include <conio.h> // C/C++
#include <cctype> // C<ctype.h> - C++<cctype>
#include <errno.h> // C<errno.h> - C++<cerrno>
//#include <graphics.h> // C/C++ >>> BORLAND-SPECIFIC
#include <ctime> // C<time.h> - C++<ctime>
#include <cstring> // C<string.h> - C++<cstring>
#include <dos.h> // C/C++
//#include "stdafx.h" // C/C++ >>> MICROSOFT-SPECIFIC
#include <windows.h> // C/C++
//#include <winbase.h> // INUTILE - déjà inclus via <windows.h>
#include // PAS DE « .h », y'a plus de « .h » pour la stl depuis longtemps
//----------------------------------------

TRUE et FALSE sont déjà définie via <windows.h>

pour le reste, j'appuis fortement « MICKBAD »

1) les inclusions multiples ne sont pas gérés
2) tes fonctions devraient être soit « static » ou encore « inline »
3) fait ce que MICKBAD a dit, une librairie!

//----------------------------------------
//- le fichier .h(fichier d'entête)
//----------------------------------------
#ifndef ___NOM_DU_FICHIER__H___ // éviter les inclusions multiples
#define ___NOM_DU_FICHIER__H___ // ...

//
// les fichiers d'entêtes globaux
// dont les autres fichiers(excepté ceux de ta librairie)
// ont besoin pour utiliser _ta_ librairie, n'inclus pas
// de fichiers inutiles ici ...
//
#include
// ...

//
// tes définitions « public » ici(macros, enum, ...)
//
#define NDF_VALEUR_CONSTANTE 1234 // NDF >> NomDuFichier(voir début fichier)

//
// tes fonctions(les prorotypes)/...
//
void ndf_clrscr(void); // par exemple
// ...

#endif // #ifndef ___NOM_DU_FICHIER__H___

//----------------------------------------
//- dans le(s) fichier(s) .cpp
//----------------------------------------
#include <cstdio> // si besoin
#include <cstdlib> // si besoin
#include <cstring> // si besoin
#include // si besoin
// ...
#include "nom_du_fichier.h"

//
// ton code ...
//
void ndf_clrscr(void)
{
// code ...
}

// ...
// ...
// ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.