Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    11

    uhm prima lezione di C nella vostra guida.. problemi..

    http://www.html.it/guide/esempi/c/index.html

    leggendo la vostra guida C sono incappato in questo sorgente... l'ho copiato e incollato su Visual C++ 2008 Expresss edition creando un progetto win32 console... compilandolo mi da 50 e passa errori.. mi hanno detto che con un'altro software dovrebbe andare perchè il codice è esatto.. ma io dico.. come è possibile studiare decentemente C se devo stare dietro a tutorial (tra virgolette) "non aggiornati" perchè si rifanno a progrmmi come borland o devC++ ? ma non mi riferisco solo a voi eh ci mancherebbe io parlo anche dei manuali della apogeo o altri testi...

    cioè se devo iniziare adesso vorrei trovare lezioni contemporanee (e che quindi non mi insegnano parole chiavi non aggiornate.. ho visto la printf ancora.. che viene segnalata come obsoleta) ma sopratutto che girino su programmi "ufficiali" e contemporanei... a me comincia a dare fastidio stà cosa.. anche a scuola che usano visaul C 6.0 e borland versiane talmente vecchia che fra un pò si trova gratis... ma dico io a che serve?!?!!?!? studiarsi 3000 cose per poi ricominciare TUTTO da capo?!?! bho...

    il mio non vuole essere un'attacco diretto ci mancherebbe.. avete stilato guide gratuite complete di tutto senza chiedere 1€ e questo vi fà solo onore però spero la prendiate come critica costruttiva per migliorarvi sempre più.... io non sono un programmatore.. quindi non posso insegnarvi proprio nulla però vi parlo da "allievo" (che è forse il punto di vista più cercato) e questo è il mio punto di vista.

    tra l'altro ho letto anche i primi passi dove consigliate i vari software per programmare sotto i vari sistemi operativi.. ma sfido io a far funzionare il codice nel link in cima su tutti i programmi... io direi di standardizzare un pò le guide. del tipo "noi usiamo borland e tutti gli esempi sono stati compilati su borland" così almeno sì sà che software seguire io da allievo al momento ignorante capisco che dopo quella bella sfilza di software prendo quello più vicino alle mie capacità perchè tanto il linguaggio C è quello.. e invece a quanto pare no..

    p.s.
    ora capisco perchè a scuola usano visual studio 6.0:
    "anche se fino alla versione 6 era possibile fare programmi che seppur non corretti giravano lo stesso o che andavano in conflitto appena eseguiti."

    saluti a tutti e complimenti comunque per il mastodontico lavoro!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Premesso che le guide e gli esempi che trovi in giro su internet possono essere sicuramente sbagliate e/o poco affidabili, non sarei così "negativo" come hai detto ...

    Ad esempio, è vero che quel sorgente d'esempio presenta dei problemi se compilato con compilatori recenti, ma non per questo non è "fondamentalmente" corretto.

    Non ho idea di quali siano questi "50 errori" ma se aggiungi

    #include <malloc.h>
    #include <stdlib.h>

    e qualche

    return NULL;

    return 0;

    dove viene richiesto, impostando il set di caratteri *non* Unicode, il programma funziona anche con compilatori recenti.

    Il fatto che la "printf" sia obsoleta, fammelo dire, è una sciocchezza dal punto di vista generale. E' la funzione piu' usata nella programmazione C e, anche se presenta delle problematiche di sicurezza, non è affatto cosi' poco usata.

    Tutto cio' premesso e considerato che non sono un grande estimatore delle guide online, ti consiglio vivamente di imparare a programmare in C/C++ dai libri, magari in inglese.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ... per quanto in effetti le guide C/C++ di HTML.it (non "nostre", che io sappia l'autore di quelle due guide non bazzica nel forum) sono, almeno parzialmente, da riscrivere, specie per quanto riguarda gli esempi dei sorgenti: il solo fatto che una guida di C (per cui si parla generalmente di C89) usi i commenti monolinea negli esempi è indicativo del fatto che è stata scritta senza pensare minimamente alla compatibilità con lo standard.
    La guida C++, poi, mischia inclusioni di C e C++, usa include pre-standard, include file a caso, presenta nella lista delle parole riservate diverse estensioni Microsoft (per di più senza i due underscore davanti), fornisce dimensioni non veritiere dei tipi di dati (da quello che dice sembra che gli int siano sempre da 2 byte... forse ai tempi di Windows 3.11), ... insomma entrambe richiedono pesanti modifiche per essere considerate una valida introduzione (non si possono certo sostituire ad un libro) rispettivamente al C e al C++.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Se usi printf su un compilatore C++ generalmente te lo segnala come obsoleto perchè vorrebbe che tu usassi std::cout. Se lo compili sotto linux non dovresti avere questi warning. O se vuoi usare visual c++ usa qualche #pragma.

    In ogni caso qualche imprecisione può sempre scapparci.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da infinitejustice
    Se usi printf su un compilatore C++ generalmente te lo segnala come obsoleto perchè vorrebbe che tu usassi std::cout
    Ehm... da quando?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    ...senza usare #pragma ricordo anch'io che visual c++ era piuttosto ...pedante sull'argomento, suggerendo l'utilizzo di std::cout. Quindi su VC++ basta dirgli di non stressare e non dice nulla.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Si, riguarda il famoso _CRT_SECURE_NO_WARNINGS che Microsoft si è inventata di sana pianta. (Di cui il mondo C/C++ continua a ridere, tra l'altro).
    Però riguarda solo il VC++ mentre dicendo compilatore c++ sembra che tutti i compilatori lo facciano, il che non è vero.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  8. #8
    Originariamente inviato da shodan
    Si, riguarda il famoso _CRT_SECURE_NO_WARNINGS che Microsoft si è inventata di sana pianta. (Di cui il mondo C/C++ continua a ridere, tra l'altro).
    ... che però, se applicato con giudizio, sarebbe stato una buona idea...
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da MItaly
    ... che però, se applicato con giudizio, sarebbe stato una buona idea...
    Non sono d'accordo. Sarebbe stata un'idea disastrosa.
    Primo perché avrebbe rotto la compatibilità con tutti gli altri compilatori e con lo standard C/C++ (la printf, la fopen etc. non sono state deprecate).

    Secondo perché Microsoft con questa iniziativa ha messo le mani dove non doveva. Deprecare qualcosa del C++ è compito che spetta solo al comitato ISO di standardizzazione del linguaggio.
    ( Ad esempio auto_ptr è deprecato in favore di shared_ptr e del futurounique_ptr. Se Microsoft avesse messo il deprecated su quello e basta nessuno avrebbe avuto da ridire. [Magari già lo fa, ma per primo li ho deprecati io non usandoli più ] )

    Terzo perché quelle funzioni non sono sicure ( a dispetto del nome.)
    codice:
    char * p =new char[9];
    char fs[]="123456789";
    p--; //see how easy it is?
    strncpy_s(p, 10, fs, 10);//undefined behavior
    Qui c'è un articolo sull'argomento ( da cui ho tratto l'esempio).
    http://www.informit.com/guides/conte...lus&seqNum=259
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  10. #10
    Originariamente inviato da shodan
    Non sono d'accordo. Sarebbe stata un'idea disastrosa.
    Per "con giudizio" intendo dire applicando un attributo "deprecated" a tutte le funzioni di stringa che non specificano le dimensioni massime del buffer (come la famosa gets, ma anche le varie strcpy, strcat, ...) che tuttavia hanno già dei rimpiazzi standard pronti (fgets, strncpy, strncat, ...). Più difficile da implementare, ma comunque fattibile, sarebbe stato un warning in caso di specificatori %s senza specificatore di larghezza usati nelle funzioni di famiglia scanf.
    Per evitare problemi sarebbe bastato mettere questi warning a livello 3, per cui i nuovi progetti ne avrebbero beneficiato, mentre sarebbero saltati fuori per i vecchi (che di solito impiegano il livello di warning 2 o (orrore!) 1) solo a richiesta.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.