Protéger mes prototypes de la double inclusions

Résolu
fire3d Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 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. :)
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   49
 
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
fire3d Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Oui en minuscule :-).
Je passe en résolu.
0