• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

Beginnersvragen C++

Status
Niet open voor verdere reacties.

Samuel

Elite Member
Lid geworden
27 mei 2007
Berichten
7.225
Waarderingsscore
0
Dag mensen,

Sinds vorige week krijg ik les in C++. We zijn gaan programmeren in Dev C++. Dat is leuk, maar ik wil ook in visual studio werken. Gewoon om gelijk twee programma's tegelijk te leren. We werken met 'Aan de slag in C++'.

Nu kun je in DevC het volgende ingeven
Code:
#include <iostream>
int main()

Terwijl je in visual studio meer in de header ziet en ook de int main uitgebreider is. Waarom is dat dan?
En kun je in visual studio ook net als in DevC gewoon een .cpp file maken en uitvoeren?
 
Voor C++ heb je een internationale standaard. De nieuwste is C++11 (ook wel C++0x genoemd)

Het programma dat je gebruikt om je programmeer code te maken is onafhankelijk van de taal.

Het kortste programma dat je in C++ kunt maken is:
Code:
int main(){}
Dit moet met alle compiler gewoon gecompileerd kunnen worden, dus ook Visual Studio.

De extensie van je bestand waar je de programma code in doet mag je zelf bepalen.
.c, .cc, .cx , cpp(vind ik alleen stom, want cpp is de C Pre Processor en niet C++)

Ik gebruik zelf altijd .cc

GCC zegt dat je deze mag gebruiken:
"`.C', `.cc', `.cpp', `.CPP', `.c++', `.cp', or `.cxx'"
En als je g++ gebruik mag je ook gewoon .c gebruiken.


Maar wat bedoel je met een uitgebreide main in Visual Studio?
Code:
int main(int argc, char *argv[]){}
dit ?

Volg je met die C++ les trouwens C++11/C++0x of nog de oude C++ ISO?
 
Ohja als je andere vragen hebt, graag!

Heb net een blok c++ college erop zitten. :)
(Eerste blok was basic, nu komen de wat geavanceerde topics)

Leuk dat we iemand hebben die C++ doet. :)
De rest doet hier allemaal dat stomme Visual Basic... en het verschrikkelijke Java. :p
 
Gezellig.
Welke standaard we gebruiken? Het boek waar de leraar naar terug zou verwijzen gebruikt C++ (ISO/IEC 14882).
Ik zal vandaag eens proberen int main (){} in visual studio te compileren.
 
Maar wat doet jouw Visual Studio dan als je een console programma project start?

En misschien moet je die niet doen, maar gewoon een leeg project starten.
 
Het is inderdaad het beste om een Empty Project te kiezen, dan kan je tenminste je programma 100% zelf opbouwen.
 
Bedankt, ik heb hem.

Gewoon een leeg project starten en dan een source file maken. Ik probeerde gewoon een source file te runnen, maar dat gaat dus niet. Er moet wel een project zijn.

edit:
Is het mogelijk om een project te openen, daar meerdere cc files te maken en deze apart te runnen?
 
Wat bedoel je met meerdere file?

Ik stop zelf eigenlijk alleen functies in een apart bestand.
 
Een source-file is ook niet uitvoerbaar.
Je moet altijd eerst compilen, dat wil zeggen omzetten naar een uitvoerbaar (.exe) bestand.
 
Remmy compileren is niet het om zetten naar een uitvoerbaar bestand. -_-
Dat is Linken.
 
Ik moet voor school per week opdrachten maken, ongeveer 4 per keer. Het zou makkelijk zijn als ik per week een project kan aanmaken en daar 4 aparte programma's in kan uitvoeren. Dus 4 source codes in 1 project.
 
Samual ik heb geen flauw idee hoe dat met Visual Studio werkt.

Ik gebruik gewoon commandlinel, voorbeeld:
g++ -c -Wall -std=c++0x ex1.cc
-c compiled en maakt een object file ex1.o
-Wall is voor meeste warnings, gebruik die!
-std=c++0x is voor c++0x dialect

Om te linken doe dan
g++ -o ex1 ex1.o

Als je meerdere objects files hebt die in 1 programma moeten doe je
g++ -o ex1 ex1.o bla.o foo.o bar.o etc.o


Als je bijvoorbeeld zelf geen programma wil maken maar een library met functie die je(of iemand anders) later in andere programma's gaat gebruiken.
g++ -c -Wall func1.cc
g++ -c -Wall func2.cc

Dan kan je de 2 object files in een library doen
ar rsv libbla.a func1.cc func2.cc

dan kan je later de functies gebruiken:
g++ -o ex1 ex1.o -lbla

-l[name] (geen spatie tussen)
Zoekt dan in lib[name].a of er objects in zitten die hij nodig heeft om ex1.o te linken naar ex1

Maar goed dit is allemaal in linux,...
 
oke, een hoop linux... :p
Als het niet in visual studio lukt kan ik het altijd in DevC++ doen.
 
Doe gewoon wat je leraar zegt.

En dat lijkt me dus Dev C++!
 
Doe gewoon wat je leraar zegt.

En dat lijkt me dus Dev C++!

Inderdaad, en ik doe er gewoon een beetje visual c++ bij. We zijn nu bezig met integers, doubles en de hele mikmak....
 
Echt niet met visual c++ beginnen.

Werk eerst maar eens een jaartje met alleen console.
Leer je veel meer, je weet niet wat je allemaal kan doen met c++. ;)
 
Samuel waar blijven je nieuwe vragen?

C++ is leuk! :p
 
:p Nou, van het weekend begin ik weer voor volgende week. Dus dan zal ik wel weer tegen het nodige lopen. Ik heb het boek 'Aan de slag met C++' van Gertjan Laan nu wel binnen.

Wel vraag ik mij nog af waarom 'wij' altijd beginnen met
Code:
#include <iostream>
using namespace std;
 
Ok komen ze :D

#include

De compiler opent file die er achter staat en gaat deze verwerken.
Include alleen HEADER files! Daar worden ze voor gebruikt.

Dan heb je ook nog 2 soorten #include
1. #include "", include file en begint in het path van de file die de #include doet.
Dus #include "someclass.h", include de file `someclass.h' die in dezelfde dir staat als bijvoorbeeld main.cc

2. #include <>, include opent files op de standaard locaties waarin includes zich bevinden.

Om de vraag van jou dan op te lossen:
#include <iostream>, include dus de file `iostream' op n van de standaard locaties.
Maar wat is `iostream'?
Nou is nogal moeilijk uit te leggen want het is verzameling van classes en templates en denk niet dat je dat nu snapt. :p

In ieder geval kan je aan de <> zien dat het op een standaard plek staat.
`iostream' valt onder de standaard library van C++.
De volledige naam is std::iostream, std van standaard.
IOStream staat voor een class die Input en Output regelt, gebruik makend van "streams".

Die standaard library is in een namespace std gezet.
Misschien verklaart dit ook waarom je `using namespace std' moet gebruiken?

Overigens kan je de functies ook zonder `using namespace std' gebruiken.
Alleen moet je dan std::cout typen ipv cout.

edit:

Ohja als je denkt waarom is het iostream en niet iostream.h. Dit is omdat ze bij C++ hebben besloten geen .h te gebruiken voor de standaard library.

nog een edit:

Als je wil weten wat iostream is...
Code:
typedef basic_iostream<char>       iostream;
basic_iostream is een template class, waarin <char> de variabele die wordt gebruikt in de class.

char is 1 bytes, maar je kan ook grotere gebruiken als je speciale tekens wil gebruiken.
Daarvoor is wiostream en die gebruikt dan niet <char> maar <wchar_t> (wide char). Gebruik dit alleen NIET bij je opdrachten, tenzij gevraagd.

In de header files <iostream> zelf staat de class basic_iostream. Kan je altijd nog lezen als je dat interessant vind. :p
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan