Archief - C++: vraagje over basiscode console application

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

StruikGewas

Legacy Member
Hallo,
Ik ben momenteel want bezig met c++ te leren (win32 console application).
Maar mijn begeleidend handboek gebruik zowel int main() als void main() voor de statements in te beschrijven.
Klein voorbeeldje:

#include <iostream>
using namespace std;

int main(){
cout << "hallo mijn naam is blabla << endl;
cin.get();
}

of

void main(){
cout << "hallo mijn naam is blabla << endl;
cin.get();
}

Ik denk dat het iets te maken heeft met wat voor soort waarde uw programma moet afleveren, maar maakt het eigenlijk veel uit welk van de 2 je gebruikt?

forloRn_

Legacy Member
Volgens de C++-standaard moet het return type van main() een int zijn. Dat is ook de waarde die je programma teruggeeft aan het OS. Een nul betekent dan dat je programma normaal beëindigd is; niet-nul duidt op een fout.

killgore

Legacy Member
en dat eerste is fout afaik in C++ standaard, er MOET een return staan :p.

btw: er zijn
Code:
 tags

Tyfius

Legacy Member
Uw handboek is fout. Ooit heeft blijkbaar is 1 compiler implementatie in C dat - foutief - mogelijk gemaakt en sindsdien heeft zowat elke compiler dat overgenomen omdat er anders te veel problemen zijn met de crappy code die mensen schrijven maar die toch moet werken omdat het ooit eens gewerkt heeft op een andere compiler.

Can I write "void main()"?

The definition
Code:
void main() { /* ... */ }
is not and never has been C++, nor has it even been C. See the ISO C++ standard 3.6.1[2] or the ISO C standard 5.1.2.2.1. A conforming implementation accepts
Code:
int main() { /* ... */ }
and
Code:
int main(int argc, char* argv[]) { /* ... */ }
A conforming implementation may provide more versions of main(), but they must all have return type int. The int returned by main() is a way for a program to return a value to "the system" that invokes it. On systems that doesn't provide such a facility the return value is ignored, but that doesn't make "void main()" legal C++ or legal C. Even if your compiler accepts "void main()" avoid it, or risk being considered ignorant by C and C++ programmers.

In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example:
Code:
#include<iostream>

int main()
{
	std::cout << "This program returns the integer value 0\n";
}
Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration. That is, in contrast to C89 and ARM C++ ,"int" is not assumed where a type is missing in a declaration. Consequently:
Code:
#include<iostream>

main() { /* ... */ }
is an error because the return type of main() is missing.
Zie http://www.research.att.com/~bs/bs_faq2.html#void-main en http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3.

killgore zei:
en dat eerste is fout afaik in C++ standaard, er MOET een return staan :p.

btw: er zijn
Code:
 tags[/QUOTE]Niet per se. Als er geen return statement staat in de main() dan gaat die standaard zelf een integer teruggeven. Maar alleen in de main(), dit wordt niet gedaan in andere functies.

StruikGewas

Legacy Member
ok bedankt
void betekent eigenlijk 'niets', het is dus een functie die niks afleverd

zero roofer

Legacy Member
lol in dat geval zit ik op een kakschool... mij hebben ze van het begin erin getimmerd dat uwe main "void main()" is
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan