Eigener Header Haufen: gut oder schlecht



  • Ich mach mir immer wieder neue Header, zum Umwandeln oder um irgendwas zu tun, das entlastet nicht nur die cpp sondern ist immer wieder verwendbar.
    Oder ist das übertrieben ?:

    #include <string>
    
    bool StrToBool(std::string STR);
    
    bool StrToBool(std::string STR)
    {
    	if (STR == "false")
    	{
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }
    
    std::string BoolToStr(bool VALUE);
    
    std::string BoolToStr(bool VALUE)
    {
    	if (VALUE == false)
    	{
    		return "false";
    	}
    	else
    	{
    		return "true";
    	}
    }
    


  • ob es übertrieben ist, hängt wohl vom Ausmaß ab...

    also für 2 kleine Funktionen einen eigenen Header zu verwenden... naja, kann man sich drüber streiten...
    wobei ich damit nicht meine, dass das schlimm ist...

    was mich an deinem Beispiel stört:

    wenn du Funktionen auslagern willst,
    dann lege in die Header bitte NUR die Deklaration und die Implementation in dazugehörige *.cpp-Dateien.

    spätestens, wenn du in zwei Dateien die gleiche Headerdatei einbindest, wirst du Fehler wegen Mehrfachdefinition von Funktionen erhalten.

    MfG Drako



  • das entlastet nicht nur die cpp sondern ist immer wieder verwendbar

    Was meinst du mit entlasten. In deinem Besipiel steht alles in einer Datei?



  • warum soll das übertrieben sein?

    ich hab mir mittlerweile fast(einige wenige fehlen noch) die ganze WINAPI in Classen umgesetzt und diese als statische libs compilert. das ganze dann in vc 2008 im includeverzeichniss verlinkt. um nicht jedesmal bei einem neuen project von vorne beginnen zu müßen.

    [NEW EDIT]

    DrakoXP schrieb:

    spätestens, wenn du in zwei Dateien die gleiche Headerdatei einbindest, wirst du Fehler wegen Mehrfachdefinition von Funktionen erhalten.

    dann verwende doch

    #pragma once
    

    btw.

    #ifndef MYHEADER_H
    #define MYHEADER_H
    
    class CMyClass
    {
    ....
    };
    #endif//MYHEADER_H
    

    und du umgehst das problem der mehrfachdeklaration und kannst die *.h sooft du willst in header einbinden.



  • #ifndef MYHEADER_H
    #define MYHEADER_H

    // stuff

    #endif MYHEADER_H

    mach ich nur wenn ichs brauch und das ist nur der fall wenn;

    bla.cpp include blub.h
    blub.h include bla.h

    oder mit 3 header

    1 include 2
    2 include 3
    3 include 1



  • zum Umwandeln oder um irgendwas zu tun

    Was willst du den umwandeln. Ich verstehe noch nicht genau was du willst. Du schreibst, dass du immer wieder header machst. In deinem Beispiel sehe ich keine einzige Header. Nur Deklarationen und Definitionen.

    Man macht eigentlich zu jedem cpp File auch ein .h File. So was nennt man aber nicht Übertreibung.



  • das was gepostet wurde ich der Inhalt eines Headers.
    Könnte ich aber auch in eine Cpp packen, und diese includen, vollkommen egal, aus meiner Sicht.



  • Könnte ich aber auch in eine Cpp packen, und diese includen, vollkommen egal, aus meiner Sicht.

    Nein nicht egal.

    Die Funktionsdeklaration kommt in den Header und die Definition in das .cpp File.
    Die Header wird eingebunden. Niemals die .cpp

    Funktionsdefinitionen kann man auch in die Header packen. Wenn sie wenige Zeilen umfassen. Dann brauche ich aber keine Funktionsdeklaration mehr.

    Oder was soll das bringen, dass die Definition und die Deklaration in einer Datei sind?



  • nix ?
    ich kenn jemand der hat alles in die Form1.h gepackt, so ein Vollpfosten.
    (Übersicht == false) = true !



  • Mann kann alles in die Header packen. Aber wie gesagt am besten nur wenn es wenig Codezeilen sind. Und dann nur die Definition. So was nennt man inline Code.

    Einfach ausgedrückt: Bei einer Deklaration wird ein Verweis hergestellt. Dieser kommt in die Header und somit wird nur ein Verweis auf eine Funktion eingebunden. Wenn man dagegen eine Definition einbindet erhält man eine Kopie der Funktion. Also bei kleinen Funktionen manchmal sinvoll.

    Wenn du also beides in eine Datei packst bindest du eine Kopie und ein Verweis ein.

    Hier noch was zum lesen:

    http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Inline_Functions



  • @rT!f@Ct schrieb:

    [NEW EDIT]

    DrakoXP schrieb:

    spätestens, wenn du in zwei Dateien die gleiche Headerdatei einbindest, wirst du Fehler wegen Mehrfachdefinition von Funktionen erhalten.

    dann verwende doch

    #pragma once
    

    ich möchte dich nur darauf verweisen, dass #pragma once hier überhaupt nicht greift und genau die von mir prophezeiten Fehler auftreten werden.
    #pragma once ist angebracht, wenn ein und die selbe Header-Datei mehrmals in ein und der selben Source-Datei eingebunden wird!

    bsp:

    #include <windows.h>
    #include <winuser.h> // diese wurde aber eigentlich schon von windows.h includiert
    

    dieses Beispiel dient nur dem Verständnis.
    ein anderes Beispiel wären zwei Libraries, welche beide std::string verwenden, also die header <string> includieren, aber völlig unabhängig voneinander sind.
    nutze ich nun beide Libraries in einer Datei, binde also deren header ein,
    so habe ich auch indirekt zweimal <string> in der gleichen Quellcode-Datei.
    DAS und nur DAS ist der Grund für Include-Guards bzw. #pragma once.

    daher:

    Deklaration in Header
    Implementation in Quelldateien



  • meinst du im header ein include mit einem, was im der cpp, die diesen header includiert dieser schon includeiert ist durche einen anderen include. 😮



  • omg, noch so ein "Torso" xD



  • Die herrschenden Gedanken sind weiter nichts als der ideelle Ausdruck der herrschenden materiellen Verhältnisse; also der Verhältnisse, die eben die eine Klasse zur herrschenden machen, also die Gedanken ihrer Herrschaft.

    da glüht der schädel, außerdem finde ich diese Aussage sehr wage getroffen und führt sichtlich zu einem falschen Schluss, der ein Mischung aus einer Epiher und Anapher ist, da sich der Anfang am Ende wiederholt, das lässt die Aussage sehr gut überlegt wirken, was sich mit meiner Anfänglichen Vermutung und Meinung nicht vereinbaren lässt.

    Tja so schnell hat man ziemlich poetischen Schwachsinn geschrieben.
    (Oxymoron -> Wikipedia. SCHON WIEDER)



  • Wenn man schon so geschwollen daher redet sollte man auch auf die Gramatik achten

    der ein Mischung

    das lässt die Aussage sehr gut überlegt wirken


Log in to reply