all-include-header



  • Shade Of Mine,

    ja, PCH sind toll, aber Pi weiss es halt besser, was willste da machen?
    Ich sehe keinen Sinn mehr darin mit ihm zu diskutieren, vor allem wenn er wieder mal in den "ich hab Recht!!11elf" Modus geschaltet hat.



  • Shade Of Mine schrieb:

    PCH bringen nur Vorteile und keine Nachteile.

    Mit PCHs hast du genau dieselben Probleme wie beim läßlichem Gebrauch eines Master-Headers. Man handelt sich gelegentlich Konflikte ein, und außerdem neigt man dazu, Abhängigkeiten nicht mehr zu "sehen", weil irgendwelche Sachen, die im PCH stehen, eh sichtbar sind, und also öfter mal ein #include zu vergessen. (Dem kann man immerhin entgegenwirken, wenn man zur Kontrolle öfters mal ohne PCH kompiliert.)

    Natürlich sind PCHs sinnvoll. Meine IDE ist auch insoweit davon abhängig, daß Code Completion immer den realen Compiler benutzt und ohne PCH fast ebensolange braucht wie eine reguläre Compilierung 😮 Erst mit richtig eingesetelltem PCH wird die Latenz vernachlässigbar. PCHs sind ein nützliches Tool, wenn man damit umzugehen weiß und die möglichen Konflikte kennt. Aber "keine Nachteile" finde ich trotzdem etwas optimistisch.

    Edit: Probleme



  • audacia schrieb:

    Aber "keine Nachteile" finde ich trotzdem etwas optimistisch.

    Ich sehe da nicht viel andere Probleme als bei normalen Includes.
    Da hat man auch sehr schnell mal ein paar includes zuviel drin und erzeugt durch fehlende includes abhaengigkeiten die nicht notwendig sein sollten.

    header sind einfach furchtbar. das ist immer ein ziemliches gefrickel 😕

    Aber ja, PCH sind kein heiliger Gral und ich habe sicher ein bisschen uebertrieben. Aber wir sind uns ja wenigstens einig dass PCH eine gute Erfindung sind 🙂



  • Shade Of Mine schrieb:

    audacia schrieb:

    Aber "keine Nachteile" finde ich trotzdem etwas optimistisch.

    Ich sehe da nicht viel andere Probleme als bei normalen Includes.

    Ein Problem ist z.B., dass einen PCHs dazu "ermuntern" haufenweise Files über das PCH File in jedem .cpp File zu inkludieren.
    Dadurch übersieht man viel schneller, wenn man in einem Header-File vergessen hat ein anderes zu inkludieren.

    // PCH.h ------------------------------------------------------
    #include <string>
    
    // MyFoo.h ----------------------------------------------------
    // #include <string> FEHLT
    #pragma once
    
    std::string Foo();
    
    // MyFoo.cpp --------------------------------------------------
    #include "PCH.h"
    #include "MyFoo.h"
    
    // ...
    

    Das Projekt wird wunderbar compilieren, den Fehler merkt man dann erst beim Compilieren eines Clientprogramms.


Anmelden zum Antworten