Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: noobvraag: gnu c++ (g++) gebruiken onder Linux  (gelezen 5911 keer)

brbtrg

  • Gast
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Gepost op: 2008/01/26, 17:11:01 »
Hallo,

De titel zegt het al: Hoe moet ik g++ gebruiken onder Ubuntu? Want ik wil graag c++ leren (ik heb er een boek voor gekocht), maar ik weet echt niet hoe dat onder Linux zou moeten. Met gedit en de terminal ofzo? Ik weet het echt niet. Misschien ben ik een beetje eigenwijs (een Linux beginner die wil leren programmeren), maar toch. Ik moet het toch een keer leren?

noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #1 Gepost op: 2008/01/26, 17:17:19 »
Het gemakkelijkste is je een goede IDE aan te schaffen:
sudo apt-get install kdevelop

Kan overweg met QT, GTK+, cmake, automake/autoconf en nog een hoop dingen. Misschien niet zo ideaal voor beginners...

Daarnaast bestaat er inderdaad, gedit. (Alhoewel als KDE-gebruiker ik je Kate zou aanraden, dat is veel uitgebreider, maar ja)

bijvoorbeeld: typ dit in gedit en sla op als hello.cpp
#include

int main() {
  cout << "Hello, World" << endl;
  return 0;
}
dan (in de terminal in dezelfde map als hello.cpp)
g++ -o hello hello.cppdan als je je programma wilt uitvoeren:
./helloIk kan je uiteraard ook van harte cmake of automake/autoconf aanraden, maar dat is misschien iets te ingewikkeld voor beginners? En uiteraard binreloc.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline BlackBurn

  • Lid
    • http://www.robmaas.eu
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #2 Gepost op: 2008/01/27, 11:11:29 »
Zelf vind ik Eclipse erg fijn. In de CT van uit mijn hoofd oktober 2007 staat hier een heel artkel over in. Ook deze is via synaptec te vinden.
Live to win, dare to lose
http://www.robmaas.eu

brbtrg

  • Gast
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #3 Gepost op: 2008/01/27, 14:10:15 »
Een hoop keuzes...

Maar ja. Voor sommige dingen (bijvoorbeeld game engines) heb je g++ nodig (anders werkt het niet). Moet ik dan persé gedit en de terminal gebruiken of kan ik ook een van die andere programma's kiezen?

noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #4 Gepost op: 2008/01/27, 14:17:31 »
Voor kleine dingen, zoals 'hello world', gebruik je beter gedit.
Voor grotere dingen, zoals een spel, gebruik je beter een IDE (KDevelop, Eclipse)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

brbtrg

  • Gast
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #5 Gepost op: 2008/01/27, 14:22:35 »
OK. Bedankt voor de informatie.

Shonof

  • Gast
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #6 Gepost op: 2008/02/02, 00:34:26 »
SeySayux legt uit hoe het moet, maar volgens mij doe ik iets verkeerd. Omdat ik een foutmelding krijg na dit.

-----

In hello.cpp

#include

int main() {
  cout << "Hello, World" << endl;
  return 0;
}

En dan in terminal.

g++ -o hello hello.cpp

-----

De foutmelding

mark@ubuntu-computer-m:~$ g++ -o hello hello.cpp
hello.cpp: In function ‘int main()’:
hello.cpp:4: fout: ‘cout’ was not declared in this scope
hello.cpp:4: fout: ‘endl’ was not declared in this scope

Ik wil graag weten wat ik verkeerd doe, want volgens mij werkt het wel bij brbtrg.
Ik hoop dat er iemand is die mij kan helpen. Alvast bedankt voor de moeite.

Offline profoX

  • Lid
    • wesley
    • Lionslink
noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #7 Gepost op: 2008/02/02, 03:04:25 »
SeySayux is gewoon nog iets vergeten, je moet de std namespace gebruiken om die functies te kunnen aanroepen, dat kan bijvoorbeeld rechtstreeks voor de functies:

Citaat
#include

int main() {
  std::cout << "Hello, World" << std::endl;
  return 0;
}
of, zodat je het niet bij elke std-functie moet plaatsen:

Citaat
#include
using namespace std;

int main() {
  cout << "Hello, World" << endl;
  return 0;
}
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #8 Gepost op: 2008/02/02, 09:46:26 »
@ProfoX: Ja dat was ik idd vergeten. Ben zo fel gewoon met Java te werken hé ;) Ik had er nog aan gedacht, maar ik was het terug vergeten om het hier aan te passen.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Qcs

  • Gast
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #9 Gepost op: 2009/11/08, 10:36:03 »
Ik heb momenteel Ubuntu 9.04 op mijn pc staan, en wil net als de persoon hierboven g++ (en de build-essentials) installeren.
Wanneer ik "sudo apt-get install build-essential" invoer in de terminal, reageert hij en vraagt hij om mijn paswoord. Maar daar zit ik nu net met een probleem. Want wat ik ook invoer, hij aanvaardt niets van invoer. Met andere woorden: er verschijnt geen enkele karakter op het scherm, en krijg dus de kans niet om een paswoord in te voeren ...
(andere dingen lukken wel in de terminal btw)

Iemand die dit probleem kent?

Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #10 Gepost op: 2009/11/08, 11:29:30 »
Dat is normaal bij het gebruikt van 'sudo', veiligheidmaatregel dat niemand mee kan lezen hoveel kaakters uw paswoord telt.

Dus gewoon uw paswoord ingeven en op enter drukken.

PS: Alles wat ge via 'apt-get install' via de terminal installeert, is ook grafisch via Systeem=>Beheer=>Synaptic te doen.

Offline Joshua822

  • Lid
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #11 Gepost op: 2009/11/08, 11:46:21 »
@ProfoX : een onafgewerkte #include preprocessor directive is niet erg net ( het mag volgens mij wel, maar toch ). Maak daar liever #include <iostream> van. En sowieso moet er een lege regel staan tussen #include... en using namespace...

Dus als je dit stukje code goed wilt compileren moet het worden :
#include <iostream>

using namespace std;

int main ()
{
  cout << "Hello world !" << endl;
  return 0;
}

Nog even over het werken met Gedit, gedit is hier ( zonder plug-ins dan ) niet geschikt voor. Gebruik hiervoor liever nano* in de terminal. Het probleem is dat Gedit geen lege regel op het einde van het broncode bestand laat, en de G++ compiler verslikt zich hierin.

* of Vim, maar dat is niet voor beginners.

Nog een tip die de meer ervaren programmeurs ( oké, ik ben niet ervaren, maar goed :P ) aan de beginners geven is altijd zo te compileren :
g++ jouwprogramma.cpp -Ansi -Wall -pedantic -o jouwprogramma.out
Dit geeft je heel veel informatie over de kleinste fout die je maakt tegen de ANSI standaard. Dit zal erg nuttig zijn als je met wat moeilijkere concepten aan de slag gaat. Dan kom je anders vroeg of laat tegen dat het programma heel anders werkt dan je verwacht, en zo kun je exact zien waarom dat zo is. Soms zijn deze opties echter wel wat te strikt.

_san

  • Gast
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #12 Gepost op: 2009/11/08, 18:16:22 »
Joshua822, er is geen reden waarom er een witregel tussen '#include' en 'using namespace std' zou moeten. Ik ben het met je eens dat het er overzichtelijker uitziet (en dus beter is te lezen), maar het is een puur persoonlijke mening.

Zo zou ik ook kunnen zeggen dat jij geen:

int main ( )
{
}

maar

int
main ( void )
{
}

moet gebruiken. Dat is persoonlijk en heeft niets met C/C++ te maken omdat het het gedrag van het programma niet beïnvloed.

Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #13 Gepost op: 2009/11/08, 18:44:55 »
@ProfoX : een onafgewerkte #include preprocessor directive is niet erg net ( het mag volgens mij wel, maar toch ). Maak daar liever #include <iostream> van. En sowieso moet er een lege regel staan tussen #include... en using namespace...
Het staat er wel echt, maar blijkbaar met het overgaan naar de nieuwe forum-software wordt het niet meer goed weergegeven...

Oh ja, using namespace std wordt afgeraden ;) en het is -ansi, niet -Ansi.

Zoals ik gewoonlijk hello-world maak: (:P)
#include <Sylph.h>
#include <iostream>

int SylphMain(Array<String> args) {
    std::cout << "Hello, " << thisapp->location() << std::endl;
    return 0;
}
scc `sylphparams cflags libs` -o hello-world hello-world.cpp;)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Joshua822

  • Lid
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #14 Gepost op: 2009/11/09, 16:52:59 »
Citaat
Joshua822, er is geen reden waarom er een witregel tussen '#include' en 'using namespace std' zou moeten. Ik ben het met je eens dat het er overzichtelijker uitziet (en dus beter is te lezen), maar het is een puur persoonlijke mening.

Misschien verwar ik het een beetje, er moet in ieder geval een wit regel tussen de preprocessor directives en de rest van het programma.

Citaat
Oh ja, using namespace std wordt afgeraden Wink

Waarom wordt "using namespace std;" afgeraden ? En maakt het eigenlijk in de praktijk iets uit ? Want using namespace std;" is in de praktijk vele malen handiger.

_san

  • Gast
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #15 Gepost op: 2009/11/09, 17:08:57 »
Citaat
Oh ja, using namespace std wordt afgeraden Wink

Waarom wordt "using namespace std;" afgeraden ? En maakt het eigenlijk in de praktijk iets uit ? Want using namespace std;" is in de praktijk vele malen handiger.

Het is alleen beter om "using namespace" niet te zetten in header files, wanneer je dit wel doet kunnen er vreemde dingen gebeuren als je daarna nog een "using namespace" gebruikt (functies raken door elkaar). Buiten dat is er niets aan de hand.

Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #16 Gepost op: 2009/11/09, 17:16:41 »
Citaat
ISO 14882:2003 17.4.4.1.1 `A C++ header may include other C++ headers.' . If you include any C++ header in your program and then do using namespace std; in some scope, you might be bringing every C++ standard library identifier into that scope. There is no way of portably knowing which ones.

Citaat
Importing the entire std:: namespace into the global scope brings in a lot more symbols than vector and list, it also brings in standard library implementational details. C++ headers are allowed to include other C++ headers, so there is no way of knowing just what symbols got pulled into global scope. Its best not to use 'using namespace std;'
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Joshua822

  • Lid
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #17 Gepost op: 2009/11/09, 19:14:02 »
Dus moet je maar voor elke functie van bijvoorbeeld iostream std:: plaatsen ?

Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #18 Gepost op: 2009/11/10, 14:25:14 »
Of de dingen apart met een using importeren, vb using std::list; using std::vector; using std::cout; ....
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline JanClaeys

  • Lid
Re: noobvraag: gnu c++ (g++) gebruiken onder Linux
« Reactie #19 Gepost op: 2009/11/23, 21:41:35 »
Nog even over het werken met Gedit, gedit is hier ( zonder plug-ins dan ) niet geschikt voor. Gebruik hiervoor liever nano* in de terminal. Het probleem is dat Gedit geen lege regel op het einde van het broncode bestand laat, en de G++ compiler verslikt zich hierin.
Eh, zonder plugins verwijdert Gedit geen "trailing whitespace" (daar is net een plugin voor nodig).
M.a.w. Gedit is dus wel gewoon bruikbaar...
Jan Claeys
Ubuntu-nl IRC team - Ubuntu-be LoCoTeam Contact