Avatar billede noem Nybegynder
24. november 2002 - 11:19 Der er 13 kommentarer og
1 løsning

linux og c++ ?

jeg er lige begyndt med c++. men jeg har har et problem, alle de begynder bøger der findes om c er beregnet til windows. (jeg ejer ikke en windows maskine :( )... fx dette program:

#include <iostream>

void main(void)
{
int ind;

  cout << "intast din intægt";
  cin >> ind;

if (ind<150000)

cout << "du er i skatteklasse a";

  else

cout << "du er i skatteklasse b";
}

hvorfor vil det ikke compile ??
. sikkert mig der laver noget galt men hvad. burde c++ i windows og c++ i linux, ikke være det samme ?
Avatar billede erikjacobsen Ekspert
24. november 2002 - 11:32 #1
#include <iostream.h>

tror jeg nok
Avatar billede noem Nybegynder
24. november 2002 - 11:48 #2
har jeg prøvet, men så siger gcc at jeg skal fjerne .h
Avatar billede noem Nybegynder
24. november 2002 - 11:49 #3
gcc output ser således ud (hvis det kan hjælpe)

[thomas@localhost thomas]$ gcc fil.cpp -o skat
fil.cpp:4: `main' must return `int'
fil.cpp: In function `int main(...)':
fil.cpp:7: `cout' undeclared (first use this function)
fil.cpp:7: (Each undeclared identifier is reported only once for each function
  it appears in.)
fil.cpp:8: `cin' undeclared (first use this function)
Avatar billede arne_v Ekspert
24. november 2002 - 11:55 #4
Nu skriver du ikke, hvorfor det ikke vil
kompile !

Der compiler fint med GCC 2.95.2 hos mig.

Men hvis du har GCC 3.x, så skal du bruge
namespace std:

#include <iostream>

using namespace std;

void main(void)
{
  int ind;
  cout << "intast din intægt: ";
  cin >> ind;
  if (ind<150000)
      cout << "du er i skatteklasse a";
  else
      cout << "du er i skatteklasse b";
}
Avatar billede arne_v Ekspert
24. november 2002 - 11:56 #5
Bruger du g++ til at compile med ?

(gcc duer ikke !)
Avatar billede arne_v Ekspert
24. november 2002 - 11:57 #6
Og just for the record - uden namespace bør
koden se ud som:

#include <iostream>

using namespace std;

void main(void)
{
  int ind;
  cout << "intast din intægt: ";
  cin >> ind;
  if (ind<150000)
      cout << "du er i skatteklasse a";
  else
      cout << "du er i skatteklasse b";
}

som er det der skal bruge stil gamle C++ compilere.
Avatar billede erikjacobsen Ekspert
24. november 2002 - 11:59 #7
Hvordan oversætter du?
Avatar billede arne_v Ekspert
24. november 2002 - 12:03 #8
Han skal bruge:

g++ fil.cpp -o fil
Avatar billede erikjacobsen Ekspert
24. november 2002 - 12:55 #9
Nemlig. Med gcc får man den beskrevne fejl:

[ej@ek0 cpp]$ gcc test1.cpp
/tmp/ccmTzfuL.o: In function `main':
/tmp/ccmTzfuL.o(.text+0xf): undefined reference to `cout'
Avatar billede noem Nybegynder
24. november 2002 - 13:00 #10
jeg bruger gcc 3.2....

nu bruger jeg 'c++ fil.cpp -o fil' og har insat 'using namespace std;' (hvad det så en er) nu har jeg kun 1 fejl tilbage:

[thomas@localhost thomas]$ c++ fil.cpp -o skat
fil.cpp:6: `main' must return `int'
[thomas@localhost thomas]$
Avatar billede erikjacobsen Ekspert
24. november 2002 - 13:02 #11
int main(void) {
...

return 0;
}
Avatar billede noem Nybegynder
24. november 2002 - 13:08 #12
#include <iostream>

using namespace std;

int main(void)
{
int ind;

  cout << "intast din intægt:";
  cin >> ind;

if (ind<150000)

cout << "du er i skatteklasse a";

  else

cout << "du er i skatteklasse b";

  return 0;
}


ok nu kan jeg compile, men programmet virker ikke :/

[thomas@localhost thomas]$ ./skat
intast din intægt:900
[thomas@localhost thomas]$
Avatar billede arne_v Ekspert
24. november 2002 - 13:11 #13
Som Erik skriver så er main faktisk en int funktion og
ikke en void funktion.

using namespace std;

importerer standard name-space !

Måske kan det nemmest forklares ved følgende
eksempel.

Her er koden (med int main):

#include <iostream>

using namespace std;

int main(void)
{
  int ind;
  cout << "intast din intægt: ";
  cin >> ind;
  if (ind<150000)
      cout << "du er i skatteklasse a";
  else
      cout << "du er i skatteklasse b";
  return 0;
}

den kunne alternativt også skrives som:

#include <iostream>

int main(void)
{
  int ind;
  std::cout << "intast din intægt: ";
  std::cin >> ind;
  if (ind<150000)
      std::cout << "du er i skatteklasse a";
  else
      std::cout << "du er i skatteklasse b";
  return 0;
}

Hvis du kender Java, så er using namespace ekvivalent
med import i java.
Avatar billede noem Nybegynder
24. november 2002 - 13:17 #14
ahh smart... tak.
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