Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Header Datei Problem [C++] (https://www.delphipraxis.net/101706-header-datei-problem-%5Bc-%5D.html)

Mark90 17. Okt 2007 16:46


Header Datei Problem [C++]
 
HI leute ich hab n kleines problem.


ich habe ein projekt für das ich genau eine Headerdatei angelegt habe. Diese Headerdatei enthält funktionen und klassen. Wenn ich versuche diese zu compilieren dann bekomme ich folgenden error.

Code:
[BCC32 Error] uPM_Threads.cpp(20): E2238 Multiple declaration for 'PhPDocument'
[BCC32 Error] uPM_Threads.cpp(19): E2344 Earlier declaration of 'PhPDocument'
[BCC32 Error] uPM_Threads.cpp(36): E2171 Body has already been defined for function 'PhPDocument::PhPDocument()'
[BCC32 Error] uPM_Threads.cpp(41): E2171 Body has already been defined for function 'PhPDocument::PhPDocument(AnsiString)'
[BCC32 Error] uPM_Threads.cpp(47): E2171 Body has already been defined for function '~PhPDocument::PhPDocument()'
[BCC32 Error] uPM_Threads.cpp(53): E2171 Body has already been defined for function 'PhPDocument::SetFileNameAndPath(AnsiString)'
[BCC32 Error] uPM_Threads.cpp(63): E2238 Multiple declaration for 'XInfo'
[BCC32 Error] uPM_Threads.cpp(62): E2344 Earlier declaration of 'XInfo'
[BCC32 Error] uPM_Threads.cpp(71): E2171 Body has already been defined for function 'XamppInfo::Get_Info(AnsiString *,AnsiString *,AnsiString *,AnsiString *)'
[BCC32 Error] uPM_Threads.cpp(102): E2171 Body has already been defined for function 'XInfo::Get_X_Install_Dir()'
Gibt es eine möglichkeit die Header datei auch in mehreren source files zu verwenden?

Nuclear-Ping 17. Okt 2007 16:57

Re: Header Datei Problem [C++]
 
Ist zwar keine direkte Lösung, aber du kannst ja einen Wert in der Header-Datei definieren und entsprechend reagieren. Weiß aber nicht, wie es in C++ mit bedingter Kompilierung ausschaut, in Delphi könnte ich mir aber sowas vorstellen:
Delphi-Quellcode:
MyHeader.inc

{$IF NOT Defined (ALREADY_INCLUDED)}

  function ...
  procedure ...
{$IFEND}

{$DEFINE ALREADY_INCLUDED}
Das würde dann so ablaufen, dass er beim ersten Aufruf die Funktionen deklariert und dann den Wert ALREADY_INCLUDED definiert. Beim nächsten einbinden der Inc-Datei (warum auch immer ...) würde der Deklarationsteil einfach nicht mitkompiliert.

DMW 18. Okt 2007 09:12

Re: Header Datei Problem [C++]
 
Mache einfach folgendes (Nuclear-Ping hat es im Prinzip schon gesagt):

Code:
  // headerdatei.hpp
#ifndef _IRGENDEIN_NAME_FUER_MEINE_HEADERDATEI_HPP
#define _IRGENDEIN_NAME_FUER_MEINE_HEADERDATEI_HPP

... // hier den wesentlichen Inhalt der Headerdatei einfügen

#endif
Allerdings werden die genannten Fehler vermutlich nicht dadurch verursacht, daß du die Headerdatei in mehreren Quelldateien verwendest - da jede einzeln kompiliert wird, ist das kein Problem -, sondern sie wird offenbar innerhalb eines Source-Datei indirekt zweimal eingebunden. Dagegen hilft obige Methode recht gut.

Mark90 18. Okt 2007 13:00

Re: Header Datei Problem [C++]
 
das hab ich auch schon gemacht

Der_Unwissende 18. Okt 2007 14:25

Re: Header Datei Problem [C++]
 
Zitat:

Zitat von Mark90
ich habe ein projekt für das ich genau eine Headerdatei angelegt habe. Diese Headerdatei enthält funktionen und klassen. Wenn ich versuche diese zu compilieren dann bekomme ich folgenden error.
...

Gibt es eine möglichkeit die Header datei auch in mehreren source files zu verwenden?

Hi,
das Problem dürften die Funktionen sein. Hier musst Du darauf achten, dass die nur deklariert werden (abschließendes ;, kein { ...}). Liegt die Implementierung in der Header-Datei vor, kommt es zu dem Problem dass Du hast. Also einfach in ein .cpp-File auslagern und dies beim Linken mit berücksichtigen.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz