Alle C und C++ Header includieren



  • // "C++" headers
    #include <algorithm>
    #include <bitset>
    #include <complex>
    #include <deque>
    #include <exception>
    #include <fstream>
    #include <functional>
    #include <iomanip>
    #include <ios>
    #include <iosfwd>
    #include <iostream>
    #include <istream>
    #include <iterator>
    #include <limits>
    #include <list>
    #include <locale>
    #include <map>
    #include <memory>
    #include <new>
    #include <numeric>
    #include <ostream>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdexcept>
    #include <streambuf>
    #include <string>
    #include <typeinfo>
    #include <utility>
    #include <valarray>
    #include <vector>
    
    // "C" headers
    #include <cassert>
    #include <cctype>
    #include <cerrno>
    #include <cfloat>
    #include <ciso646>
    #include <climits>
    #include <clocale>
    #include <cmath>
    #include <csetjmp>
    #include <csignal>
    #include <cstdarg>
    #include <cstddef>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    
    // special headers 
    //...
    
    wait()
    {
      //...
    }
    
    int main() 
    { 
      //...
    wait();
    }
    

    Macht dies als allgemeine Vorlage Sinn oder hat das spezielle Nachteile?
    Die exe wird auch nicht kleiner, wenn man weniger includiert.



  • Includiere mal keinen Header und dann nur <iostream> sollte imho schon einen Unterschied machen.

    BTW: Nein mach das nicht, imho wird das...

    ...unübersichtlich
    ...compilieren deutlich verlängert

    Außerdem sollte man nur includieren was man wirklich benötigt.

    MfG SideWinder



  • Der Compiler holt sich doch nur, was er wirklich braucht, oder sehe ich das verkehrt. Die exe wächst dadurch auch nicht. Das Compilieren geht nicht viel langsamer. Also warum nicht?



  • weil es den Quelltext unübersichtlich macht.
    Du selbst weist vielleicht wie dein Prog löaufen soll, aber sobald jemand anderes das wissen will bekommt er probleme:
    Sind nur die benötigten header drin, so kann er sich anhand derer schonmal nen groben überblick verschaffen was das programm alles können soll (also z.b. ob es inn eine Datei schreibt oder ob es mit Zeit arbeitet odersonnstwas).



  • das kompilieren wird langsamer, weil der Preprozessor alle Header einfach inkludiert und der Compiler sämtliche Deklarationen auflöst, ob die Benutzt werden oder nicht.



  • und der Compiler sämtliche Deklarationen auflöst

    Kannst Du das bitte genauer erklären?



  • int foo(); //durch die deklaration, weiss der Compiler, dass es eine Funktion
    //foo gibt, die keine Argumente hat und int zurückliefert
    
    int main() {
      foo(); //gäbe es die deklaration nicht, wär das hier ein Fehler
    }
    

    Der Compiler löst also die deklaration auf und speichert die irgend wo (gibt ja auch precompiled Header, wo das alles schon erledigt ist und der Compiler sich die Zeit spart, wenn dein Compiler sowas nutzt, dann dürfte dass nur minimal langsamer sein, wenn du alle Header inkludierst), dass braucht eben Zeit. Da du ja durch die ganzen Header hunderte Deklarationen einbindest, muss der Compiler diese alle eben abarbeiten.


Anmelden zum Antworten