Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035

    [C]Rand e stdlib

    Come mai la funzione rand mi funziona anche senza includere il file di intestazione stdlib? Sapreste illuminarmi?
    Percaso viene a sua volta incluso in stdio.h?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C]Rand e stdlib

    Originariamente inviato da Lak3d
    Come mai la funzione rand mi funziona anche senza includere il file di intestazione stdlib? Sapreste illuminarmi?
    Percaso viene a sua volta incluso in stdio.h?
    Perché il fatto di poter usare una certa funzione non dipende tanto (e solamente) da un file di header ma dal fatto che il compilatore faccia il link con la libreria che la contiene. Quando compili il tuo programma, il linker alla fine linka comunque con la libreria standard.

    Per usare rand() è richiesto l'include di <stdlib.h>. Il fatto che rand abbia come prototipo int rand(void); ti va bene.
    Infatti se durante la compilazione del tuo programma il compilatore non trova i prototipi delle funzioni (es. perché non hai incluso i giusti header), lui pensa che le funzioni ritornano un int.
    In altri casi, per altre funzioni, non includere l'header corretto può causare dei problemi con i tipi di dato restituiti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    ti ringrazio della risposta, ma non ho capito la questione del tipo int ritornato.
    Nel mio caso non trova il file di intestazione ma linka comunque la libreria standard del C che contiene l'implementazione della funzione rand()... ok, è una libreria standard e quindi la trova comunque... ma non ho ben capito la questione dell'intero; se la funzione funziona correttamente significa che la trova... e quindi conoscerà anche il tipo di dato ritornato, no?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Lak3d
    significa che la trova... e quindi conoscerà anche il tipo di dato ritornato, no?
    Sì, la trova in fase di link ma .... in questa fase il linker non sa e non conosce minimamente cosa fanno le funzioni, cosa prendono in input e cosa restituiscono!!!! Il linker sa solo che la funzione pippo() è ad un certo offset dentro un modulo oggetto e un altro modulo oggetto (che non conosce dove sta la funzione) ne ha bisogno. Il linker si occupa solo di "fissare" gli indirizzi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.