fehlermeldung



  • Hallo,

    ich nutze heute zum erstenmal DEV-CPP und habe auch gleich die erste
    Warnung für folgenden Programmcode bekommen:

    #include <iostream.h>
    #include <stdio.h>
    
    int main(){
        int meink;
        cout << "k-Wert eingeben: ";
    
        cin >> meink;       // scanf("%d", &meink);
        cout << "eingegeben: ";
        cout << meink;
        system("PAUSE");
    }
    

    Warnung:

    1 C:\Dev-Cpp\include\c++\3.3.1\backward\iostream.h:31,              
     from C:\Dokumente und Einstellungen\computer\Desktop\hi.cpp 
    In file included from C:/Dev-Cpp/include/c++/3.3.1/backward/iostream.h:31, 
                  from C:/Dokumente und Einstellungen/computer/Desktop/hi.cpp 
    
    2 C:\Dev-Cpp\include\c++\3.3.1\backward\backward_warning.h:32 #warning 
    This file includes at least one deprecated or antiquated header. 
    Please consider using one of the 32 headers found in section 17.4.1.2 of 
    the C++ standard. Examples include substituting the <X> header for the 
    <X.h> header for C++ includes, or <sstream> instead of the deprecated 
    header <strstream.h>. To disable this warning use -Wno-deprecated.
    

    ich hab nur etwas verstanden, das was mit dem include nicht stimmt.
    Aber der Befehl #include <iostream.h> stimmt doch???

    gruß



  • Ne, bei den Standard-Headern lässt man das .h weg 🙂



  • Das ".h" solltest du für schönes C++ weglassen, dafür musst du dann aber auch immer

    std::cout
    

    ,

    std::cin
    

    ,... schreiben oder unter den include-zeilen

    using namespace std;
    


  • Die beiden Header, die du dort eingebunden hast, sind veraltet - gültig sind <iostream> und <cstdio> (wobei <stdio.h> auch noch im Ansi-Standard enthalten ist - wegen Kompatibilität mit C).

    (und ehe du über den nächsten Fehler stolperst - alle Standard-Funktionen und -Klassen liegen im Namensraum std, also mußt du sie entweder mit "std::" kennzeichnen oder mit einem "using namespace std;" global bekannt machen)



  • Dankeschön. Hab wohl ein altes Buch 😞



  • Und std::system("pause") is auch doof 😛

    #include <iostream>
    
    int main()
    {
        std::cout << "k-Wert: " << std::flush;
        int my_var = 0;
        std::cin >> my_var;
        std::cout << "k wurde mit " << my_var << " belegt!" << std::endl;
    
        std::cin.get();
    }
    

    ... wobei das nur geht solange cin nicht das failbit gesetzt hat. Dann musst du das erst wegräumen und den Inhalt vom cin-Buffer löschen.



  • (D)Evil schrieb:

    std::cout << "k-Wert: " << std::flush;
    

    Das flush hier ist aber unnötig - unter Normalbedingungen sind cin und cout sowieso miteinander gekoppelt, so daß jeder Zugriff auf cin als erste Amtshandlung den cout-Puffer flusht.



  • Jaja 😛 Das ist mir bekannt ^^ (Und wurde auch schon mehrmals darauf hingewiesen ...) ... find es so aber ein wenig klarer was da abgehen soll ^^


Anmelden zum Antworten