Avatar billede RJFreelance Praktikant
06. september 2003 - 15:51 Der er 25 kommentarer og
1 løsning

C++ Fejl når jeg vil kompliere

Hvorfor siger den dette når jeg vil kompliere :

31 C:\Dev-Cpp\include\c++\backward\iostream.h
In file included from C:/Dev-Cpp/include/c++/backward/iostream.h

1 C:\Documents and Settings\Rasmus Jørgensen\Dokumenter\egne programmer\c++\startcin.cpp
from C:/Documents and Settings/Rasmus Jørgensen/Dokumenter/egne programmer/c++/startcin.cpp

2 C:\Dev-Cpp\include\c++\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.

4 C:\Documents and Settings\Rasmus Jørgensen\Dokumenter\egne programmer\c++\startcin.cpp
`main'
Avatar billede driis Nybegynder
06. september 2003 - 15:53 #1
Prøv at poste koden, du vil kompilere.
Avatar billede driis Nybegynder
06. september 2003 - 15:55 #2
Men et meget hurtigt bud :
erstat <iostream.h> med <iostream
Avatar billede driis Nybegynder
06. september 2003 - 15:55 #3
Altså:
#include <iostream>
Avatar billede zyxtem Nybegynder
06. september 2003 - 16:38 #4
Altså:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
cout<<"Hallo World\n";
system("pause"); // Så den ikke lukker
return 0;
}
Avatar billede RJFreelance Praktikant
06. september 2003 - 17:52 #5
jamen det er fra en bog, da jeg er igang med at lære C++ så vil da helst ha at det hele virker.. Hvad kan fejlen være ??
Avatar billede zyxtem Nybegynder
06. september 2003 - 18:17 #6
Den er forældet ganske enkelt. Man har brugt iostream.h engang
Avatar billede RJFreelance Praktikant
06. september 2003 - 18:29 #7
Den kommer bare med en ny fejl når jeg fjerner .h
Avatar billede driis Nybegynder
06. september 2003 - 18:31 #8
Hvilken bog er det ? Det er præcist som zyxtem siger, iostream.h er en gammel version af iostream - og de fleste nye compilere vil have, at du bruger iostream. Du kan med stor sandsynlighed finde en compiler setting, hvor du kan slå ovennævnte warnings / errors fra, hvis du absolut VIL bruge iostream.h. Men du bør bruge <iostream>.
Avatar billede driis Nybegynder
06. september 2003 - 18:32 #9
Post hele koden, du vil kompilere her. Så er det meget nemmere at hjælpe.
Avatar billede bertelbrander Novice
06. september 2003 - 19:48 #10
Når du bruger #include <iostream> (og ikke <iostream.h>) er cout, cin osv ikke i dit namespace, men i std, så du skal skrive std::cout og std::cin eller skrive
using namespace std;
efter #include <iostream>

Alternativet er at ignorere dev-cpp's (efter min ringe mening) lidt fjollede besked (eller finde ud af hvordan du disabler den).
Avatar billede arne_v Ekspert
06. september 2003 - 19:49 #11
Den skriver jo selb hvordan man slipper af med den:

  To disable this warning use -Wno-deprecated.
Avatar billede RJFreelance Praktikant
06. september 2003 - 20:55 #12
Kode:

#include <iostream.h>

void main(void)
{
int tal; // tal som skal indlæses

cout << "Skriv dit yndlings-tal og tryk enter: ";
cin >> tal;
cout << "Dit yndlings-tal er " << tal << endl;



}



Bog:
C++ af kris Jamsa

Det der med disable den aner jeg da ikke hvad er.. ;)
Avatar billede arne_v Ekspert
06. september 2003 - 20:59 #13
I gamle dage skulle det se ud som:

#include <iostream.h>

int main(void)
{
  int tal; // tal som skal indlæses
  cout << "Skriv dit yndlings-tal og tryk enter: ";
  cin >> tal;
  cout << "Dit yndlings-tal er " << tal << endl;
  return 0;
}

Idag skal det se ud som:

#include <iostream>

using namespace std;

int main(void)
{
  int tal; // tal som skal indlæses
  cout << "Skriv dit yndlings-tal og tryk enter: ";
  cin >> tal;
  cout << "Dit yndlings-tal er " << tal << endl;
  return 0;
}
Avatar billede arne_v Ekspert
06. september 2003 - 20:59 #14
Og main har aldrig været void.
Avatar billede RJFreelance Praktikant
06. september 2003 - 21:02 #15
Det står der altså i denne bog at den skal...
Avatar billede RJFreelance Praktikant
06. september 2003 - 21:04 #16
Og det virker da fint, når jeg trykker enter lukker den vinduet..
Avatar billede arne_v Ekspert
06. september 2003 - 21:04 #17
Muligt. Men derfor er det stadigt forkert. Forhåbentligt er det kun
en enkelt smutter.
Avatar billede RJFreelance Praktikant
06. september 2003 - 21:05 #18
Vil det så sige at jeg ikke kan bruge noget i den bog ??
Alt skal så ændres ??
Avatar billede arne_v Ekspert
06. september 2003 - 21:07 #19
Formentligt ikke.

Du skal stryge nogle .h i include, altid have using namespace std
men ellers skulle det meste gerne stadigvæk være validt.
Avatar billede RJFreelance Praktikant
06. september 2003 - 21:08 #20
Ok, og hvorfor lukker den så vinduet ved klik på enter ??
Avatar billede arne_v Ekspert
06. september 2003 - 21:09 #21
void main virker OK med mange compilere, så længe man ikke
tester på status efter kørsel af programmet.

Det bliver det imidlertid ikke rigtigt af.
Avatar billede RJFreelance Praktikant
06. september 2003 - 21:10 #22
Når jeg ændre det til void skriver den fejl !
Avatar billede RJFreelance Praktikant
06. september 2003 - 22:29 #23
#include <iostream>

using namespace std;

int main(void)
{
  int tal; // tal som skal indlæses
  cout << "Skriv dit yndlings-tal og tryk enter: ";
  cin >> tal;
  cout << "Dit yndlings-tal er " << tal << endl;
  system("PAUSE");
  return 0;
}


Sådan, så virker det..

Men lige et sidste spg. skal jeg så i ALLE mine programmer indsætte:

  system("PAUSE");
  return 0;

i slutningen ??
Avatar billede arne_v Ekspert
06. september 2003 - 22:32 #24
system("PAUSE");

er noget du kun vil bruge når du kører console mode programmer fra dev-cpp
(for at sikre at du kan nå at læse output). Du vil ikke bruge de til færdige
programmer eller GUI mode programmer.

Return returnerer er værdi fra programmet. På de fleste platforme er
0 = OK og >0 = fejl.
Avatar billede olennert Nybegynder
06. september 2003 - 22:47 #25
Som sædvanlig vil jeg lige nævne at jeg ikke bryder mig om

using namespace std;

men vil foretrække

using std::cout;
using std::cin;
using std::endl;

Altså flere explicitte using, i stedet for using namespace std (som strider totalt mod hvad namespaces er beregnet til).
Avatar billede RJFreelance Praktikant
06. september 2003 - 23:42 #26
Vil i så ikke lige kigge på det spg jeg lige har oprettet ?
Så jeg kan få en bog der er noget værd..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester