TinTin Geschrieben 5. Mai 2006 Teilen Geschrieben 5. Mai 2006 folgendes Problem: ich habe eine Headerdatei 'id3lib_ext.h' Inhalt u.a.: #include <id3/tag.h> #include <id3/misc_support.h> ... typedef struct ID3C { CString csTitle; CString csAlbum; CString csInterpret; CString csYear; CString csComposer; CString csOrgInt; CString csCopyright; CString csURL; CString csEncoded; CString csComment; int iTrackNo; int iGenre; } ID3C; ... void ID3_GetInfoAtOnce(const ID3_Tag *tag,ID3C& id3c); diese habe ich in einer Dialog-Headerdatei inkludiert. jetzt sagt mein Kompiler: ...id3lib_ext.h(6) : error C2011: 'ID3C' : 'struct' Typneudefinition ...id3lib_ext.h(6) : Siehe Deklaration von 'ID3C' ich hab schon alles abgesucht, ich finde den Fehler nicht. Habe zuerst gedacht, dass ich wohl etwas doppelt inkludiert habe, war aber nicht so. Zur Info, ich greife aus der id3lib_ext.h und aus der Dialogklasse auf das struct zu. verwirrt, TinTin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 5. Mai 2006 Teilen Geschrieben 5. Mai 2006 Habe zuerst gedacht, dass ich wohl etwas doppelt inkludiert habe, war aber nicht so.Doch, ist so. Jede Wette. Vermutlich bindest du id3lib_ext.h selbst und zusätzlich eine Headerdatei ein, die wiederum id3lib_ext.h einbindet. Dagegen helfen Includewächter: Am Anfang der Headerdatei #ifndef ID3LIB_EXT_H_INCLUDED #define ID3LIB_EXT_H_INCLUDED[/CODE] und am Ende [CODE]#endif Der Name (ID3LIB_EXT_H_INCLUDED) ist egal, es darf nur nicht zur Kollision mit anderen Namen kommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 5. Mai 2006 Autor Teilen Geschrieben 5. Mai 2006 Danke, mit dem Wächter im Gepäck läuft es. Wobei ich den Doppler immer noch nicht gefunden habe. Schönes Wochenende, TinTin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 8. Mai 2006 Teilen Geschrieben 8. Mai 2006 Ein Includewächter sollte in jeder Header datei sein. Meistens funktioniert auch ein #pragma once . Dabei kann es zu keinen Namensproblemen mit den Defines kommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 8. Mai 2006 Teilen Geschrieben 8. Mai 2006 Meistens funktioniert auch ein #pragma onceUm das ein wenig zu konkretisieren: "Meistens" bedeutet hier: Bei Microsoft Visual C++. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 8. Mai 2006 Teilen Geschrieben 8. Mai 2006 .. und gcc 3.3 / 4.0 ... und Codewarrior (ab 8.3, uU auch früher) Borland hab ich nicht benutzt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 8. Mai 2006 Teilen Geschrieben 8. Mai 2006 Hallo, .. und gcc 3.3 / 4.0 ... und Codewarrior (ab 8.3, uU auch früher) Man sollte aber generell eine portable Lösung bevorzugen, "#pragma" gehört naturgemäss nicht dazu. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 9. Mai 2006 Autor Teilen Geschrieben 9. Mai 2006 Der Name (ID3LIB_EXT_H_INCLUDED) ist egal, es darf nur nicht zur Kollision mit anderen Namen kommen. Was meist du denn damit genau, wie ist das mit egal gemeint? Wenn ich mich jetzt zu blöde anstelle, sorry. TinTin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 Es ist egal, ob das Präprozessorsymbol ID3LIB_EXT_H_INCLUDED oder TINTIN_IST_DER_GROESSTE oder ALLYOURBASEAREBELONGTOUS heißt. Es muss nur eindeutig sein, d.h. du darfst es nirgendwo sonst benutzen, nur für den Includewächter dieser einen Headerdatei. Damit man sofort erkennt, dass es sich um einen Includewächter handelt, ist natürlich die erste Form zu bevorzugen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 10. Mai 2006 Autor Teilen Geschrieben 10. Mai 2006 Ich fasse zusammen: Der Name des Includewächter ist unabhänig von dem Namen der Includedatei, darf aber in einem Projekt nur einmal vorkommen. Daher sollte der Name der Wächters entsprechend des Namens der Include- datei gewählt werden. Danke, TinTin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.