Il Bar dell'Ingegneria

Verifiche sezioni complesse in c.a. agli SLE ed SLU

« Older   Newer »
 
  Share  
.
  1. francesco.coppola
        +1   -1
     
    .

    User deleted


    Circa la prototipizzazione delle funzioni in C.

    Quando i signori Ritchie e Kernigan pubblicarono nel 1978 il loro 'mitico' libro "The C language", la necessità di dichiarare un prototipo delle funzioni prima del loro utilizzo era prevista solamente per le funzioni che non restituivano un intero (Ovvero funzioni che non restituiscono nulla o restituiscono un intero non hanno necessità di un prototipo).

    La necessità della dichiarazione preliminare del prototipo - parlo di cose di cui so assai poco - nascerebbe dalle 'esigenze' di ottimizzazione del codice che il C da sempre è in grado di fare. Il compilatore cioè vuol sapere prima cosa la funzione restituisce in modo da potersi organizzare di conseguenza.

    Il linguaggio ebbe un tale successo che parecchie furono le implementazioni indipendenti di compilatori che lo leggessero, con conseguente proliferazione di 'dialetti' più o meno compatibili tra loro.

    Nel 1983 si istituì un apposito comitato ANSI con il compito di mettere 'ordine'.
    I componenti di tale comitato si trovarono di fronte a parecchi problemi. La loro filosofia però, volta a salvaguardare il codice nel frattempo già scritto, fu quella di 'non decidere' in molti casi.

    Esistono oggi ad esempio compilatori che pur essendo al 100% ANSI C (dopo una prima emanazione, 1.0, mi pare che ne sia uscita una seconda), hanno comportamenti differenti.
    Ad esempio le specifiche ANSI non indicano mai quanti byte occupa un tipo float (il minimo dovrebbe essere 4 byte, ma nulla vieta, in particolari implementazioni, per sfruttare particolarità hardware o altro che esso sia costituita da 6 o 8 byte).
    Oppure non esiste un criterio unico circa il valore che assume una variabile appena dichiarata (in alcuni compilatori viene dichiarata ed automaticamente posta a 0, in altri ha un valore 'a casaccio').

    Per tornare alla prototipizzazione essa non è obbligatoria (almeno per ANSI C 1.0) ma "raccomandata", anche se la funzione restituisce un int.
     
    Top
    .
390 replies since 26/9/2012, 10:47   29394 views
  Share  
.