Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    dimensione eccessiva e scegliere libreria

    Salve, oggi ho compilato con codeblocks questo programma c++

    codice:
    #include <iostream>
    int main()
    {
    std::cout << "Ciao!";
    }
    e il file compilato è stato un exe di 888 kb cioè quasi un megabyte, a me sembra eccessivo voi che ne dite? è normale?

    qui c'è il link dell'exe :

    link exe

    in c++ come si fa a sapere che libreria bisogna scegliere per delle funzioni? da qualche parte per esempio c'è scritto che std richiede iostream? e perchè serve mettere "std::" prima di cout?

    come si fa a creare una libreria ? per esempio iostream che cosa contiene?

    Grazie!

  2. #2

    Re: dimensione eccessiva e scegliere libreria

    Originariamente inviato da paperino00
    Salve, oggi ho compilato con codeblocks questo programma c++

    codice:
    #include <iostream>
    int main()
    {
    std::cout << "Ciao!";
    }
    e il file compilato è stato un exe di 888 kb cioè quasi un megabyte, a me sembra eccessivo voi che ne dite? è normale?
    In modalità debug è normale, dal momento che l'eseguibile non è ottimizzato e contiene tutte le informazioni di debug. Prova a cambiare il build target da Debug a Release, vedrai che le dimensioni diminuirà. Nota però che normalmente si usa il target Debug in modo da poter effettuare il debug del programma senza problemi, e si compila in modalità Release solo quando si vuole generare il programma da distribuire: poiché infatti in modalità Release l'ottimizzatore è attivato non esiste più una corrispondenza uno a uno sorgente-codice macchina generato, per cui è molto più difficile effettuare il debug con un eseguibile generato in tale maniera.
    in c++ come si fa a sapere che libreria bisogna scegliere per delle funzioni? da qualche parte per esempio c'è scritto che std richiede iostream?
    1. Non sono librerie, sono file di inclusione.
    2. Sta tutto scritto nella documentazione (ad esempio qui).
    e perchè serve mettere "std::" prima di cout?
    Perché cout sta nel namespace std, come tutti i nomi della libreria standard C++.
    come si fa a creare una libreria ?
    Per creare un header, basta creare un normale file di testo contenente le dichiarazioni e salvarlo nella medesima cartella del .cpp. Se si tratta solo di roba template o funzioni inline basta quello, altrimenti hai bisogno di una controparte .cpp da compilare e linkare insieme ai programmi che fanno uso dell'header in questione.
    Se vuoi creare una libreria statica vera e propria la questione è più complicata.
    per esempio iostream che cosa contiene?
    http://cplusplus.com/reference/iostream/
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    perchè programmi come eMule contengono diversi file cpp se il programma è uno solo?
    le dll si creano in c++?
    grazie

  4. #4
    Originariamente inviato da paperino00
    perchè programmi come eMule contengono diversi file cpp se il programma è uno solo?
    le dll si creano in c++?
    grazie
    1. che domande sono?!
    2. che legame hanno con la discussione principale?!

  5. #5
    Originariamente inviato da paperino00
    perchè programmi come eMule contengono diversi file cpp se il programma è uno solo?
    Perché un singolo gigantesco .cpp presto diventa ingestibile. I progammi si dividono in vari .cpp per "aree di competenza" del codice (in generale una classe per ciascuna coppia .h/.cpp).
    le dll si creano in c++?
    Talune sì, talaltre no.

    Comunque, non posso che sottoscrivere quello che dice MdE2005.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da MdE2005
    1. che domande sono?!
    2. che legame hanno con la discussione principale?!
    Non hanno nessun legame con l'argomento principale e questo non è il modo di usare un forum.

    Ciascuna discussione deve avere uno ed un solo argomento e solo di quello si parla.

    Inserire più quesiti in una discussione non è consentito, in quanto non consente la corretta fruizione del servizio.

    Inoltre, c'è un Regolamento interno che specifica altre regole (come l'indicazione obbligatoria del linguaggio nel titolo).


    Questa discussione prosegue sull'argomento del titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    ho provato a selezionare in code::block la modalità relase, ora la dimensione del programma "Hello world" si è dimezzata però quasi mezzo megabyte solo per scrivere una frasetta mi sembra eccessivo.... inoltre malwarebytes dice che c'è un trojan nell'exe mentre secondo l'antivirus è pulito.. cosa devo fare, praticamente sono bloccato

    se può servire quà c'è il link del mio programma:
    Link programma


    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.