Ich habe eine Header-Datei, die ein Include-Guard-Setup enthält. Ich habe mehrere C-Dateien in meinem Projekt, die diese Header-Datei für die Kompilierung benötigen. Wenn ich jedoch kompiliere, bekomme ich eine Fehlermeldung, dass die Funktion bereits aus einer anderen Datei enthalten ist. Sollte dies nicht durch den Wächter verhindert werden? In der Theorie glaube ich, dass ich in der Lage sein sollte, diese Datei ein paar Mal zu importieren und dieses Problem nicht zu haben.C Problem mit Include-Wachen
#ifndef __BST_INCLUDED
#define __BST_INCLUDED__
//bunch of code here
#endif
Fehler:
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:
Vielleicht verwenden Sie '#pragma once' –
Betreffend __BST_INCLUDED, fürchten Sie den doppelten Unterstrich! [Double Unterstrich ist für die Verwendung durch die Bibliothek-Implementierung reserviert] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier) Schlecht und wirklich Wenn du das tust und mit einem Bibliotheksidentifikator kollidierst, kann es passieren, dass es zu ausgeflippten, schwer zu debuggenden Dingen kommt, also tu es einfach nicht. – user4581301
@ user4581301: So ist ein einzelner Unterstrich im Dateibereich. – Olaf