begin process at 2012 05 27 18:52:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > MYLIB.H EST UNE LIBRAIRIE CONTENANT LES FICHIERS INCLUDES NÉCÉSSAIRES

MYLIB.H EST UNE LIBRAIRIE CONTENANT LES FICHIERS INCLUDES NÉCÉSSAIRES


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :mylib, librairie, include Niveau :Débutant Date de création :26/05/2006 Date de mise à jour :04/06/2006 19:53:56 Vu :4 719

Auteur : UKR6900

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

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

  • /* 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
/* 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.


 Historique

26 mai 2006 20:01:37 :
Allégement du code
04 juin 2006 19:53:56 :
correction d'une partie

 Sources du même auteur

RÉCUPÉRATION DES DATES D'UN FICHIER EN CLAIR
GESTION DES SERVICES WINDOWS PAR LES API DANS UNE CLASSE
GESTION BASE DE REGISTRE (LOCAL OU DISTANTE)AVEC DES FONCTIO...
Source avec Zip CRÉATION D'UNE CLASSE CL_STRING (GESTION DES CHAÎNES)
GESTION D'UN ARBRE BINAIRE PAR LES CLASSES

 Sources de la même categorie

Source avec Zip Source avec une capture EVAL EXPRESSION COMPLEXE EN 15 LIGNES DE CODE par yann_lo_san
Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70

 Sources en rapport avec celle ci

Source avec Zip [C++][W IN]LIBRAIRIE HTTP par nipepsinicolas
Source avec Zip Source avec une capture [C, WIN32/LINUX] LIB POUR TRAVAILLER DES IMAGES BITMAPS par katsankat
Source avec Zip CLASSE XML ULTRA LITE par bAzilew
Source avec Zip LIBRAIRIE GRAPHIQUE SDL par PLA
Source avec Zip BODY OF KNOWLEDGE, UTILITAIRE POUR AUGMENTER LE PROCESSUS DE... par mindslight

Commentaires et avis

Commentaire de mickbad le 26/05/2006 09:57:56

oui mais personnellement je ne trouve pas que ça soit une super idée de mettre des définitions de fonctions dans un .h !

A moins de les transformer en fonction inline (C++) ou en macro #define (pour le C), je pense que c'est une erreur.

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.

1) MaSource1.cpp (#include Mylib.h) => MaSource1.o (ou .obj)
2) MaSource2.cpp (#include Mylib.h) => MaSource2.o (ou .obj)
3) MaSource1.o et MaSource2.o => MonProgramme.exe

Selon ton principe, les étapes 1 et 2 peuvent se dérouler sans problème (au warning près suivant les options de compilation). Mais l'assemblage (étape 3) ne marchera pas car les fonctions
randomize, gotoxy, Text_Color, Get_Color_Text, colorie_nombre, colorie_texte, cls, cls2, lower_texte, upper_texte, clrscr sont définies 2 fois !!! Le compilateur ne sait pas qui choisir pour l'adressage des appels à fonction, donc il y a une erreur !

Suis-je clair ?

Ca marche peut être avec toi et ta façon de compiler mais pas pour tout le monde. Fait du développement professionnel (ou même amateur averti :)) et tu verras qu'on programme plutôt de cette manière (.cpp => .o; .o => .exe)


Dernière chose, essaye de mettre des noms de fonction adapté à ta lib car par exemple clrscr() existe déjà si tu inclus sous windows conio.h
Mieux vaut alors faire un ensemble de fonction avec un prefixe type : Mylib_clrscr(); ...

tu as essayé de faire une .DLL ou un .LIB ?

Bon courage
.Mick.

Commentaire de excrt le 26/05/2006 17:40:48

- 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 <iostream.h> // <<<<<<<<< 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 <iostream> // 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 <un_fichier_xyz.h>
// ...

//
// 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 <iostream> // si besoin
// ...
#include "nom_du_fichier.h"

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

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





Commentaire de Kirua le 27/05/2006 13:01:58

"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 <iostream.h> 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 <iostream>

tout simplement.

Et un librairie c'est pas un fichier .h avec des includes :).

Commentaire de Kirua le 27/05/2006 13:05:02

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.

Commentaire de mickbad le 27/05/2006 13:44:57

> 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 :)

Commentaire de Kirua le 27/05/2006 14:07:09

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 ...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lib ADO sous Visual C++ [ par callaghan1981 ] j ai inserer la librairie .h et les lib ds le projetmais ca na marche pas tro.si je compile #include"ADOlib.h"il me met une erreurcompiling...connect. librairie pour inportb [ par je_ne_viens_qu1_fois ] Bonjour à tous.Je programme sous dev-cpp et doit dialoguer avec un microcontroleur, relié à mon ordi via le port USB.Pour ce, je pense utiliser la com librairie probleme [ par helena123 ] Bonjour, lorsque je lance avec Borland C++ Builder 5, il me dit qu il ne retrouve pas la fonction to_string() alors qu elle est clairement definie dan import d'une librairie en c++ [ par wislam2007 ] Salut dans mon code j'ai mis : #import "myLib.tlb" no_namespace named_guids ça fonctionne, mais je veux que "mylib.tlb" ne soit pas en dur. j'ai es librairie [ par infodaoudi ] Bonjour,quelle est l'&#233;quivalent de la biblioth&#233;que #include &lt;unistd.h&gt; en visual C++. je compile un programme en visual C++ et je me t Compiler mon projet avec la librairie SNMP correctement [ par flyss92 ] Bonjour a tous, Je souhaiterais utiliser la librairie SNMP++ dans mon projet, - Premièrement je compile le Makefile dans le dossier src du répertoire Ajout de librairie dans DEV-C++ [ par cedric ] Bonjour, je voudrai rajouter les includes suivant dans DEV-C++ pour creer un sniffer mais je ne trouve pas ces librairie :#include &lt;net/if.h&gt;#in librairie # include "stdafx.h" avec Dev C++ non reconnue [ par pipic ] Hello,je réalise un prog c++ a partir du compilateur Dev C++Cependant ce dernier ne reconnait pas la librairie suivante# include "stdafx.h"D'ailleurs multi thread avec librairie phtread -> help please [ par davwart ] Hello all.j'essaie de faire un chat en mode console en utilisant la librairie pthread.h.mon serveur a une fonction main qui lance un thread d'ecoute e librairie en vis c++ pr message box [ par pipic ] slt todo el mundoquelle est la librairie a utiliser pour faire afficher les messages box sous visual c++ ?????G des classes externes avec lesquelles


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales