Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [c++]grote exe (https://forum.scholieren.com/showthread.php?t=640188)

Dr HenDre 24-10-2003 21:58

[c++]grote exe
 
Uit een boek met simpele c++ opdrachten en toen ik ze afging kwam ik bij de volgende. Je moet iets maken wat uitrekent hoeveel dagen er zijn verstreken vanaf het begin van een jaar tot de opgegeven datum. Nu heb ik het allemaal gemaakt, dat is het probleem niet, maar ik heb nu een exe van 1,20MB. Lijkt me een beetje groot voor een code an 30 regels ofzo, weet iemand waar het misshien aan kan liggen. Dit is de code:

Code:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    unsigned int dag, maand, jaar;
    unsigned int verstrekenDagen=0;
    unsigned int aantalDagen[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
   
    cin >>dag>>maand>>jaar;
    if(dag>31 || maand>12) cout<<"Ongeldige datum";
   
    (jaar% 4 == 0 && jaar % 100 != 0) ? aantalDagen[2]=29 : aantalDagen[2]=28;
   
    for (int i=1; i<=(maand-1); i++)
    {
        verstrekenDagen += aantalDagen[maand-i];
    }
   
    verstrekenDagen += dag;
   
    cout<<"Dit is de "<<verstrekenDagen<<" ste dag van het jaar " << jaar << endl;
    system("pause");
}

Iemand een idee?

edit:
Ow ja, misshien handig om te vermelden, ik gebruik Dev-C++

edit2:
Met MSVC++ krijg ik een exe van 520KB, vind ik nog steeds redelijk groot (n)

@neophyte Je bent met net voor met MSVC++, maar ik ben weer bezig met c++ hoor, al een heel tijd, ben nu met de WIN32 API bezig, valt niet mee (n)

twim 24-10-2003 22:01

HEY GAST!
dacht dat jij geen C++ meer deed?

Ontopic:
Geen idee.
Kunt ook beter Visual C++ 6.0 gebruiken ;)

Enlightenment 24-10-2003 22:11

Komt gewoon omdat hij bij de .exe allemaal DLLs (die dus dynamisch zijn, maar je compileert ze statisch) versmelt. Als je die weg zou laten zou je een kleine .exe over houden).

Dr HenDre 24-10-2003 22:56

Citaat:

Enlightenment schreef op 24-10-2003 @ 22:11:
Komt gewoon omdat hij bij de .exe allemaal DLLs (die dus dynamisch zijn, maar je compileert ze statisch) versmelt. Als je die weg zou laten zou je een kleine .exe over houden).
En waar komen die DLL's dan vandaan, want het ligt niet aan de include, met dezelfde includes en een simpelere prog krijg ik prog's van een paar kb.

Screaming Slave 24-10-2003 22:58

ligt aan welke functies je gebruikt.

include "conio.h" eens doe ipv system("pause"); dit -> getch();

Dr HenDre 24-10-2003 23:14

Citaat:

Crystal Method schreef op 24-10-2003 @ 22:58:
ligt aan welke functies je gebruikt.

include "conio.h" eens doe ipv system("pause"); dit -> getch();

helpt nix, hij blijft 1,20MB
en het ligt ook niet aan
(jaar% 4 == 0 && jaar % 100 != 0) ? aantalDagen[2]=29 : aantalDagen[2]=28;

(heb het vervangen door if-else maar hij blijft even groot)

deathz0rz 25-10-2003 00:37

op freebsd wordt ie maar
5750 bytes :)

$./a.out
31
12
2097
Dit is de 365 ste dag van het jaar 2097
pause: not found
$

Screaming Slave 25-10-2003 01:00

compile je niet met debug symbols enzo? strip de executable es.

Refro 25-10-2003 10:45

Zover mij bekent is dat van dll's die worden meegenomen bullshit,tenzij je ergens expliciet vermeld dat ie geen dll's moet gebruiken maar de statische libraries(en dan is het nog maar de vraag).(maar dit kan ik fout hebben omdat ik allang niet meer in windows heb zitten pluizen)

Ik verwacht dat er idd debug symbols worden meegenomen ik ken de IDE niet maar hier zou je eens naar moeten kijken. Ik weet dat in VC++ 6 bij een debug build er veel plaats aan debug symbols opgaat en er worden in de "executable" ook stukken leeg gelaten zodat hier bij kleine veranderingen code rechtstreeks in de executable geplaats kan worden zodat deze niet opnieuw gelinkt moet worden.

Een goede C++ compiler hoeft in ieder geval geen groter programma te genereren dan een goede C compiler met een vergelijkbaar programma.

Maar ik zou naar de optimalisatie kijken en zorgen dat je geen Debug symbols meenemt.

BTW als je in het leer process zit zou ik me niet druk maken over de grootte van een executable

Chimera 25-10-2003 10:48

VC++ linkt standaard een stel 'standaard' libs mee, zou even in de config kijken welke libs dit precies zijn, en of je die uit kunt schakelen.

Screaming Slave 25-10-2003 12:54

Citaat:

Chimera schreef op 25-10-2003 @ 10:48:
VC++ linkt standaard een stel 'standaard' libs mee, zou even in de config kijken welke libs dit precies zijn, en of je die uit kunt schakelen.
is dat een lib met dezelfde functies als msvcrt.dll toevallig? als je dus daar dynamisch mee linkt, werkt je programma ws niet meer Windows 95 (kmeen dat die dll toen nog niet meegeleverd werd?), maar eh dat boeit dus geen fuck :p

Lethalis 25-10-2003 15:08

Dev-C++ gebruikt de MinGW port van de GCC compiler. Als je daarvan in de FAQ kijkt, vind je het volgende:

Citaat:

Why is my C++ binary so large?

C++ programs using the Standard Template Library (ie/ #include <iostream>) cause a large part of the library to be statically linked into the binary. The need to statically link the stdc++ into the binary is two fold. First MSVCRT.dll does not contain C++ stdlib constructs. Second the legal implications of generating a libstdc++.dll are restricted by the licensing associated with the library. If you wish to keep your file size down use strip to remove debugging information and other verbatim found in the binary.
strip --strip-all SOMEBINARY.exe

Lethalis 25-10-2003 15:15

Citaat:

Dr HenDre schreef op 24-10-2003 @ 21:58:
@neophyte Je bent met net voor met MSVC++, maar ik ben weer bezig met c++ hoor, al een heel tijd, ben nu met de WIN32 API bezig, valt niet mee (n)
Om het ontwikkelen van Windows applicaties eenvoudiger te maken - vooral in combinatie met C++ - zijn er verschillende wrappers voor de Win32API in de wereld gezet. Het is op zich wel leuk om direct met de Win32API te leren werken, zodat je een beter begrip hebt van de interne werking van Windows applicaties, maar echt pragmatisch is het niet.

Kun je beter leren met de MFC of .NET classes om te gaan.

Dr HenDre 25-10-2003 20:01

Citaat:

******** schreef op 25-10-2003 @ 15:15:
Om het ontwikkelen van Windows applicaties eenvoudiger te maken - vooral in combinatie met C++ - zijn er verschillende wrappers voor de Win32API in de wereld gezet. Het is op zich wel leuk om direct met de Win32API te leren werken, zodat je een beter begrip hebt van de interne werking van Windows applicaties, maar echt pragmatisch is het niet.

Kun je beter leren met de MFC of .NET classes om te gaan.

Heb MFC bekeken, maar als ik niet snap wat heel die code doet, dan kan ik alleen een paar standaard dingen, en ik wil juist alles naar mn eigen zin aanpassen.

Dr HenDre 25-10-2003 20:05

Thnx, ik heb effe gekeken bij de compile opties, en daar stond idd dat hij extra debugging info maakte

DEChengst 25-10-2003 21:07

"Dat heet geen C plus plus maar C dubbel plus"

Aldus een of andere vage docent.

deathz0rz 25-10-2003 21:31

Citaat:

Desecrator schreef op 25-10-2003 @ 21:07:
"Dat heet geen C plus plus maar C dubbel plus"

Aldus een of andere vage docent.

lol

Chimera 25-10-2003 21:41

Citaat:

Desecrator schreef op 25-10-2003 @ 21:07:
"Dat heet geen C plus plus maar C dubbel plus"

Aldus een of andere vage docent.

Ghe, wat een sukkel :D

Screaming Slave 26-10-2003 02:44

Citaat:

Desecrator schreef op 25-10-2003 @ 21:07:
"Dat heet geen C plus plus maar C dubbel plus"

Aldus een of andere vage docent.

wtf. heb je hem gesuckerpunched? :)

Lethalis 26-10-2003 12:01

The name C++ (pronounced "see plus plus") was coined by Rick Mascitti in the summer of 1983. The name signifies the evolutionary nature of the changes from C; "++" is the C increment operator.

Bron: The C++ Programming Language SE, Bjarne Stroustrup (The Creator of C++)

Die zal het toch wel weten ;)


Alle tijden zijn GMT +1. Het is nu 10:01.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.