Protéger mes prototypes de la double inclusions

Résolu/Fermé
fire3d Messages postés 12 Date d'inscription samedi 1 septembre 2012 Statut Membre Dernière intervention 11 août 2015 - Modifié par fire3d le 6/09/2014 à 22:34
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 sept. 2014 à 20:04
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. :)
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 sept. 2014 à 23:50
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
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
7 sept. 2014 à 13:46
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