Protéger mes prototypes de la double inclusions

Résolu
fire3d Messages postés 15 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,

J'aimerais comprendre clairement ce qu'est la double inclusion et comment protéger mes prototypes face a ce problème.

J'ai pour le coup déjà essayer de le faire, en vain malheureusement -->

#IFNDEF __protect__
#define __protect__

void    ft_putchar(char c);
void    ft_putstr(char *str);
void    ft_putnbr(int nombre);
int     ft_strcmp(char *s1, char *s2);
int     ft_strlen(char *str);
void    ft_swap(int *a, int *b);

#ENDIF


Merci pour votre aide d'avance. :)

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Attention aux directives préprocesseurs, elles sont sensibles à la casse.
    #IFNDEF
    #ENDIF

    Ce n'est pas bon. Il faut mettre :
    #ifdef
    #endif
    


    En utilisant ce principe, tu ne dois pas avoir le problème de double inclusion... Peux-tu montrer un exemple concret, car c'est bizarre.
    As-tu bien vérifié que tes prototypes ne sont définies que dans le header ?
    Cdlt,
    0
    1. sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   50
       
      Bonjour
      Je pense qu'il veut dire par protection des inclusions, la possibilité d'inclure une seule fois l'en-tête de fichier et non deux fois, alors pour ça il faut rajouter à la suite de tes directives de préprocesseur certaines directives, je les connais pas tous mais celle-ci doit répondre à ta demande, mais dans le cas contraire réfère-toi à la documentation du langage C qui pourrais plus te renseigner ou ce lien Wikipédia https://en.wikipedia.org/wiki/Include_guard
      Exemple
      #ifndef DEF_MONFICHIER_H_INCLUDE
      #define DEF_MONFICHIER_H_INCLUDE
      
      #include <stdio.h>
      
      #endif
      


      à bientôt
      0
  2. fire3d Messages postés 15 Statut Membre 1
     
    J'ai trouver la solution Merci. :)

    #ifndef     FT_H
    # define    FT_H
    
    void    ft_putchar(char c);
    void    ft_putstr(char *str);
    void    ft_putnbr(int nombre);
    int     ft_strcmp(char *s1, char *s2);
    int     ft_strlen(char *str);
    void    ft_swap(int *a, int *b);
    
    #endif
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui en minuscule :-).
      Je passe en résolu.
      0