code::blocks soll mehr motzen!



  • Wenn ich z.B. <string> oder <algorithm>.......nicht includiere, macht es meinem Compiler (MinGW) (IDE code::blocks) nichts aus, der includeirt die anscheinend automatisch. Aber was wenn ich den Code dann mal auf einem Compiler compiliere der das nicht kann\macht?!
    Deshalb würde ich es gerne so umstellen, das mir der Compiler nen Error hinhaut wenn ich was nicht einbinde, bzw. mindestens eine Warnung wäre nett.
    Kennt sich jemand mit code::blocks aus?

    MfG
    Stromberg



  • Keiner nä Ahnung was ich mein?

    MfG
    Stromberg



  • Könnte es nicht sein, dass z.B. <algorithm> in einem von dir inkludierten Header schon inkludiert ist?



  • fuege "-Wall" und "-pedantic" zu den Compileroptionen hinzu.



  • Bei Wall und pedantic is aber schon n Haken.
    z.B. es ist doch nicht normal das sowas geht:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        string a="Merkwürdig";
        int a=5;
        int b=23; 
        swap(a,b);
        return 0;
    }
    

    MfG
    Stromberg



  • Geht unter Visual C++ auch. => ist nicht merkwürdig



  • Hem, ich habs jetzt nicht explizit ausprobiert, aber wenn iostream selbst string inkludiert, ist es logisch das es geht.

    Auch wenn ich es selber so halte, das ich alles inkludiere, was ich selber benutze.



  • @Stromberg
    Der Standard schreibt nicht vor, welche Header die anderen Header inkludieren dürfen. Dem Problem kannst du wohl direkt nicht begegnen. Du könntest dir aber über die -H-Option die Includierung anzeigen lassen.

    btw. afaik arbeiten die libstdc++-Leute gerade daran, die Include-Deps zu reduzieren. Vielleicht fliegen in der nächsten Version dann entsprechende Warnungen.



  • Stromberg schrieb:

    Bei Wall und pedantic is aber schon n Haken.
    z.B. es ist doch nicht normal das sowas geht:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        string a="Merkwürdig";
        int a=5;
        int b=23; 
        swap(a,b);
        return 0;
    }
    

    Meinst Du jetzt die zwei a oder was?



  • Nein, er wundert sich, das std::string und std::swap nicht als unbekannte Typen/Funktion angemeckert werden. Das mit den zwei a war wohl eher ein Tippfehler, denke ich.


Log in to reply