header



  • shade37337 schrieb:

    wenn ihr eigen header schreibt haltet ihr wech an den std also mit namespace und ohne .h
    oder wie macht ihrs??? 😕 😕 😕

    Du solltest dich auf jeden Fall mal an die deutsche Rechtschreibung halten.



  • die wird doch eh alle 3 wochen neu standardisiert.... 😉 😉



  • ich mein halt ob ihr so macht.

    //foo.h
    #ifndef FOO_H
    #define FOO_H
    int foo();
    #endif
    

    oder so

    //foo
    #ifndef FOO
    #define FOO
    namespace foo
    {
        int foo();
    }
    #endif
    

    das man im header std:: schreibt is mir klar mach ich auch so oft in der main.cpp



  • Meine Header schaun immer so aus.

    // Kurzes Kommentar, 
    // meist net mehr als 2 Zeilen
    
    #ifndef HEADER_H
        #define HEADER_H 1
    
        class blub{
            public:
                blub();
                ~blub();
        };
        // ect ect
    
    #endif /* HEADER_H */
    

    Und halt immer mit .h, find ich persönlich besser.



  • Ich benutz als Endung .hpp (man muss sich ja von den C-Leuten abgrenzen können ;)). Ohne Endung is nicht so doll, erstens klappt das Syntax-Highlighting dann meist nicht sofort und zweitens kann man Standardheader nicht mehr ganz so leicht identifizieren. Wenns nicht gerade ein kleiner Testheader ist benutz ich auch Namespaces.



  • Bei mir sieht nen Header so aus:

    /*
     Standardkommentar mit nen paar allgemeinen Infos, gefolgt von nen paar Infos
     über die Datei bzw. deren Inhalt (für doxygen).
    */
    #ifndef IRGENDNEKONSTANZE
    # define IRGENDNEKONSTANZE
    
    # ifdef _MSC_VER
    #  pragma once
    # endif
    
    //Hier der Quellcode, im Regelfall in nem namespace (Projektname, oder Abkürzung dafür)
    
    #endif
    


  • //Name.h
    //Hat folgenden Zweck zu erfüllen, enthält funktionen...
    //Autor 2006
    
    #ifndef inc_name
    #define inc_name
    
    using namespace std;
    
    namespace storm {
    
      void name() {
        //funktion
      }
    }
    #endif
    
    /*Anwendung
    ...
    ...
    ...
    ...
    */
    

    So sieht das bei mir aus!
    Warum sollte man using namespace std; nicht verwenden?



  • Versuch mal folgendes:

    template< class T >
    struct vector{};
    #include "Name.h"
    #include <vector>
    
    int main()
    {
      vector< int > myVec; //Fehler ::vector oder std::vector
    }
    


  • Storm.Xapek.de schrieb:

    Warum sollte man using namespace std; nicht verwenden?

    Weil dann jeder der deinen Header verwendet den namespace std unfreiwillig im globalen namespace hat und das den sinn von namespaces zunichte macht.
    Kurt



  • Also dann immer std:: davor.
    OK wieder was gelernt



  • ZuK schrieb:

    Storm.Xapek.de schrieb:

    Warum sollte man using namespace std; nicht verwenden?

    Weil dann jeder der deinen Header verwendet den namespace std unfreiwillig im globalen namespace hat und das den sinn von namespaces zunichte macht.
    Kurt

    was ist, wenn man hinterher wieder den globalen namespace use-d?



  • using holt nur irgendwas in den globalen namespace. Wenn's mal dort ist kriegst es nicht mehr weg.



  • ZuK schrieb:

    using holt nur irgendwas in den globalen namespace. Wenn's mal dort ist kriegst es nicht mehr weg.

    und

    {
      using namespace wasauchimmer;
    }
    

    geht wohl auch nicht? 😞



  • namespace A
    {
      typedef int Int;
    }
    
    namespace B
    {
      using namespace A;
    
      const Int i = 3;
    }
    
    Int i; //Fehler
    A::Int b; //Ok
    


  • @zuckmayr: du verstehst da etwas falsch.

    using namespase wasauchimmer;
    

    bedeutet nicht dass du ab jetzt nur mehr wasauchimmer ohne angabe des namespaces verwenden kannst sondern dass du ab jetzt auch wasauchimmer ohne explizite angabe des namespaces verwenden kannst.
    K


Anmelden zum Antworten