logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd ładowania iostream w Dev-C++ 3.4.2 - jak naprawić?

bobek122 08 Gru 2006 20:30 4983 9
REKLAMA
  • #1 3309867
    bobek122
    Poziom 21  
    Posty: 624
    Pomógł: 4
    Ocena: 18
    Witam! mam problem z tą biblioteką nie chce mi jej załadować do żadnego programu... używam deva wywala bład:

    2 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from C:\aaa.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from C:\aaa.cpp
  • REKLAMA
  • #2 3311121
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    a jak ładujesz? #include <iostream> czy #include <iostream.h>?

    W c++ powinno być bez ".h" na końcu ładowane.
  • REKLAMA
  • Pomocny post
    #3 3311173
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Rzeczywiście dziwny błąd. W katalogu C:\Dev-Cpp\include\c++\ powinien znajdować się plik iostream (bez rozszerzenia). Napisz program:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    main()
    {
    cout<<"proba";
    getch();
    }
    Powinno być OK.
    Zawsze też możesz podać jawnie:
    #include "c:\dev-cpp\include\c++\iostream"
    Zawsze pisz linię: using namespace std;
  • REKLAMA
  • #5 3311421
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Co dziwne? Że bez ".h"? Że "using namespace..."? Taka jest specyfikacja języka c++ i trzeba się do niej przyzwyczaić :P
  • REKLAMA
  • #6 3314058
    _Ziper_
    Poziom 11  
    Posty: 6
    ed-ek napisał:
    Zawsze pisz linię: using namespace std;

    Nad tym bym dyskutował. To w ogóle nie jest potrzebne do poprawnego działania programu. Nie każdy musi używać standardowej przestrzeni nazw. :)
  • #7 3314436
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    _Ziper_ napisał:
    ed-ek napisał:
    Zawsze pisz linię: using namespace std;

    Nad tym bym dyskutował. To w ogóle nie jest potrzebne do poprawnego działania programu. Nie każdy musi używać standardowej przestrzeni nazw. :)

    Możesz nie używać. Ale stosując Dev-C++ i deklarując #include<iostream.h> kompilator zgłosi ci ostrzeżenie że stosujesz przestarzały nagłówek.A po co mam mieć ostrzeżenia? Nic mnie nie kosztuje dodanie jednej linijki kodu. Zresztą ostrzeżenia pojawią się też jeżeli zastosuję bez deklaracji using...... inne nagłówki.
  • #8 3314487
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    No dobra, ale jak się nie wpisze using namespace std... to 3/4 kompilatorów nie będzie potrafiło zrozumieć co to jest cout ;-) A wtedy to dopiero się człowiek załamuje...
  • #9 3317673
    _Ziper_
    Poziom 11  
    Posty: 6
    ed-ek napisał:
    Możesz nie używać. Ale stosując Dev-C++ i deklarując #include<iostream.h> kompilator zgłosi ci ostrzeżenie że stosujesz przestarzały nagłówek.A po co mam mieć ostrzeżenia? Nic mnie nie kosztuje dodanie jednej linijki kodu. Zresztą ostrzeżenia pojawią się też jeżeli zastosuję bez deklaracji using...... inne nagłówki.

    przecież nie pisałem żeby używać iostream.h, według standardu iso c++ powinno się używać iostream bez rozszerzenia h.

    maciek_slon napisał:
    No dobra, ale jak się nie wpisze using namespace std... to 3/4 kompilatorów nie będzie potrafiło zrozumieć co to jest cout Wink A wtedy to dopiero się człowiek załamuje...

    nie 3/4 a wszystkie. :P zamiast pisać "using namespace std;" możesz przecież ręcznie określać przestrzeń nazw przy każdym wywołaniu funkcji z tej przestrzeni np std::cout czy std::cin. Nie każdy używa tych funkcji notorycznie, czasem jest to zbędne.
  • #10 3317918
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    _Ziper_ napisał:

    maciek_slon napisał:
    No dobra, ale jak się nie wpisze using namespace std... to 3/4 kompilatorów nie będzie potrafiło zrozumieć co to jest cout Wink A wtedy to dopiero się człowiek załamuje...

    nie 3/4 a wszystkie. :P zamiast pisać "using namespace std;" możesz przecież ręcznie określać przestrzeń nazw przy każdym wywołaniu funkcji z tej przestrzeni np std::cout czy std::cin. Nie każdy używa tych funkcji notorycznie, czasem jest to zbędne.


    Chodziło mi o początkujących ludzi którzy dopiero zaczynają zabawę z C++... I sam pamiętam z własnego doświadczenia że czasami po prostu ucieka to using... i nagle się robi 2536187 błędów :P

Podsumowanie tematu

✨ Problem dotyczy błędu ładowania biblioteki iostream w środowisku Dev-C++ 3.4.2. Przyczyną jest użycie przestarzałego nagłówka #include , który w standardzie C++ powinien być zastąpiony przez #include bez rozszerzenia ".h". Kompilator w Dev-C++ zgłasza błędy lub ostrzeżenia przy stosowaniu starego nagłówka. Zalecane jest także użycie dyrektywy using namespace std; lub kwalifikowanie przestrzeni nazw std:: przy odwołaniach do elementów standardowej biblioteki, np. std::cout. Przykładowy poprawny kod zawiera #include , #include , using namespace std; oraz funkcję main() z wywołaniem cout. Wskazano, że plik iostream bez rozszerzenia powinien znajdować się w katalogu C:Dev-Cppincludec++3.4.2. Dyskusja podkreśla zgodność z ISO C++ oraz praktyczne aspekty eliminacji ostrzeżeń kompilatora.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA