J'ai un fichier d'en-tête qui inclut une configuration de garde. J'ai plusieurs fichiers C dans mon projet qui nécessitent ce fichier d'en-tête pour la compilation. Quand je vais compiler cependant j'obtiens une erreur disant que la fonction a déjà été incluse d'un autre dossier. La garde d'inclusion ne devrait-elle pas empêcher ceci de se produire? En théorie, je crois que je devrais pouvoir importer ce fichier plusieurs fois et ne pas avoir ce problème.C Problème avec les protections incluses
#ifndef __BST_INCLUDED
#define __BST_INCLUDED__
//bunch of code here
#endif
Erreur:
bst.h:22:13: error: conflicting types for ‘pruneBSTNode’
extern void pruneBSTNode(bst *tree,bstNode *node);
^
In file included from vbst.h:5:0,
from bstrees.c:7:
Peut-être utiliser '#pragma once' –
En ce qui concerne __BST_INCLUDED, craignez le double trait de soulignement! [Double soulignement est réservé à l'utilisation de la bibliothèque de mise en œuvre] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier) Bad et vraiment bizarre, difficile de déboguer les choses peuvent arriver si vous le faites et entrer en collision avec un identifiant de la bibliothèque, alors ne le faites pas. – user4581301
@ user4581301: Il en est de même d'un trait de soulignement unique au niveau du fichier. – Olaf