g++ mit header- und cpp-files



  • servus zusammen,

    ich hab folgendes problem:
    zum einen versteh ich nicht, wie der compiler (in meinem fall g++ 4.0.3 unter ubuntu 6.06) wissen kann, welche cpp-datei zu welchem headerfile gehört. zum beispiel kann ich ja wo auch immer durch #include "Klasse.h" ein headerfile einbinden. ich hab schon an mehreren anderen stellen gelesen, dass man nur im cpp-file die zugehörige headerfile includen soll. wie funcktioniert das. ich hab auch gelesen, dass bei visual studio und dergleichen die cpp-dateien einfach dem projekt inzugefügt werden müssen. das leuchtet mir ein, aber wie realisier ich das auf der kommandozeile?

    da schließt sich mein zweites problem an: wie compiliere ich, wenn ich überhaupt kein cpp-file verwenden will, sondern alles im headerfile implementieren will (ich weiß empfiehlt sich nicht, ist aber zum beispiel bei templates nicht so günstig)?

    danke schonmal

    grüße
    edlefson



  • Hallo,

    Zur ersten Frage:

    //foo.hpp
    #ifndef FOO_HPP
    #define FOO_HPP
    
    class Foo {
      int i;
    
    public:
      void set(int);
      int get() const;
    };
    
    #endif //FOO_HPP
    
    //foo.cpp
    #include "foo.hpp"
    
    void Foo::set(int i_) { i = i_; }
    int Foo::get() const { return i; }
    
    //main.cpp
    #include <iostream>
    #include "foo.hpp"
    
    int main() {
      Foo f;
      f.set(7);
      std::cout<<f.get()<<std::endl;
    
      return 0;
    };
    

    So läuft dann das kompilieren:

    g++ -o main main.cpp foo.cpp
    

    da schließt sich mein zweites problem an: wie compiliere ich, wenn ich überhaupt kein cpp-file verwenden will, sondern alles im headerfile implementieren will (ich weiß empfiehlt sich nicht, ist aber zum beispiel bei templates nicht so günstig)?

    Nehmen wir mal an, im oberen Beispiel hätte ich alles in den header geschrieben, also es gäbe keine foo.cpp, dann rufst du den Compiler so auf:

    g++ -o main main.cpp
    

    Fertig. Der Compiler sucht sich die Header in dem Fall schon selber 🙂

    MfG

    GPC



  • ok ich habs kapiert. mir war nicht ganz klar, dass man immer "alle" cpp-files kompilieren muss. vielen dank!

    gruß
    edlefson


Anmelden zum Antworten