Header in VS 2010



  • Folgender Code wird von VS fehlerfrei ausgeführt ohne dass die entsprechende Header-Datei für pow includiert wurde. Das ist soweit ganz nett, scheinbar macht das VS im Hintergrund alleine, wenn es eine Funktion nicht zuordnen kann. Für den Lerneffekt finde ich das allerdings nicht sehr sinnvoll. Kann man das in den Optionen irgendwo abschalten oder kann man VS dazu bringen, wenigstens die #include-Zeile im Code einzufügen?

    #include <iostream>
    using namespace std;
    
    int main()
    {
       cout << pow(3.0,4) << endl;
       return 0;
    }
    


  • Dann kommt pow(..) mit dem iostream Header rein. Kann ja sein - guck halt bei jeder Funktion in der Doku, welchen Header Du inkludieren musst.



  • pow befindet sich eigentlich im math.h-Header. MinGW liefert bei dem Code auch eine Fehlermeldung, weil es pow nicht finden kann, deswegen frage ich mich, wo VS 2010 das findet...



  • Compiliere mal mit "/P" für diese Datei, dann siehst Du es...

    Siehe:
    http://msdn.microsoft.com/en-us/library/8z9z0bx6



  • Danke, aber mit /P funktionert der Code im Moment gar nicht mehr, mit oder ohne Header nicht.

    Ich kriege den Fehler hier:

    1>LINK : fatal error LNK1104: Datei "Debug\main.obj" kann nicht geöffnet werden.



  • Cassiopeia schrieb:

    Danke, aber mit /P funktionert der Code im Moment gar nicht mehr, mit oder ohne Header nicht.

    Hast du dir mal Jochens Link durchgelesen? /P bewirkt, daß der Code nur durch den Präprozessor gejagt wird - damit kannst du dir ansehen, was der Compiler tatsächlich vorgesetzt bekommt.
    (und bei den Standard-Headern kann es durchaus sein, daß die sich gegenseitig einbinden, wenn sie einander benötigen - darauf verlassen würde ich mich allerdings nicht)



  • Cassiopeia schrieb:

    Danke, aber mit /P funktionert der Code im Moment gar nicht mehr, mit oder ohne Header nicht.

    Das ist normal. Du solltest einfach nur die Doku lesen...


Log in to reply