Newsgroup: it.comp.lang.c
Titolo: creare i propri file .h

Ho guardato sulle FAQ, ma non ho trovato informazioni relative....
Come posso inserire funzioni e definizioni in file h miei?
Qual'è la struttura di un file h?
TNX
NM

 Qual'è la struttura di un file h?
Non fidarti ciecamente di quello che stai per leggere!! :)
- definisci quali librerie e quali costanti ti servono
    #include <blablabla>
    ...
    #define BLABLABLA
    ...
- Scrivi le tue belle funzioni
    int vogliotrovareunaragazza(char *macchina,long denari)
    ...
    return 0; /*  ^_^  */
- Salvi come "impossibile.h".. :)
Spero d non aver detto troppo cazzate..
PS: cerca di non ri-definirti dei valori definiti in qualche altra libreria
che usi, altrimenti potrebbero comportare qualche conflitto..
--
-------------------------------------------------------------------------
"Il pollo senza testa conosce solo il posto dove è stato,
 ma non vede dove va"
   da "Spice Girls", il film
  ____       ____                    ______
 |  _ \ __ _|  _ \ _ __   __ _ _ __ |__  (_) ___
 | |_) / _` | |_) | '_ \ / _` | '_ \  / /| |/ _ \   icq uin : 86622960
 |  __/ (_| |  _ <| | | | (_| | | | |/ /_| | (_) |  
parn...@email.it
 |_|   \__,_|_| \_\_| |_|\__,_|_| |_/____|_|\___/
-------------------------------------------------------------------------

 NM
 
Come risposta concordo con quanto detto da Parnanzio.
Inoltre bbutto lě una cosa che spero qualcuno confermi o smentisca (la so
da due giorni).
Aprendo vari .h ho notato la presenza di 
#ifndef _VARIABILE
#define _VARIABILE
....contenuto file.h.......
#endif
ora: io non so se #ifndef e' c-standard, ma e' molto utile. 
In pratica, se ci sono piů moduli che utilizzano tale header, ifndef
controlla che, se la _VARIABILE non esiste, bisogna aggiungere il codice
seguente, se esiste, non aggiunge nulla. Questo impedisce che il codice
contenuto nello header venga copiato piů volte nello stesso programma.
Ciao,
Riccardo

che usi, altrimenti potrebbero comportare qualche conflitto..
Nel caso di qualche typedef gia' usata altrove il compilatore te lo
segnala. Nel caso delle #define dovrebbe, ma sinceramente non mi e'
mai capitato e non ti so dire con certezza.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

contenuto nello header venga copiato più volte nello stesso programma.
Si, ed e' standard. RTM :)


   funzioni interne della libreria standard.
Grazie Mox.
Informazioni utilissime.
Vado subito a modificare un prog che sto facendo utilizzando #ifndef
Ciao,
Riccardo

 ricordo se qui o it.comp.os.linux.development).
Kiedo umilmente scusa e mi prostro ai tuoi piedi..


- Salvi come "impossibile.h".. :)
HIHIHIHIHIHIH
Grazie a tutti per le risposte!
NM

Quindi ricapitolando un file .h potrebbe essere un file .c senza main?
NM

 NM
No. nei file h del C non ci devi mettere codice ma solo dichiarazioni o
prototipi.
Ciao
Giuseppe

prototipi.
In C99 le funzioni inline devono essere visibili a tutti i file che le
usano (cioč vanno messe negli header) come in C++?
-- 
Marco Barisione (ICQ 84277092)

 usano (cioè vanno messe negli header) come in C++?


>
In ANSI C  allora niente dichiarazioni......
E allora se voglio fare delle funzioni riutilizzabili dove le
dichiaro??? (Non faccio un file H solo per i define!)
NM

nom...@nowhere.no
 (NoMan):

Di cosa parli? Le funzioni le dichiari nei .h, l'implementazione nei
.c.
Vuoi una funzione riutilizzabile? Ti fai il .h con la dichiarazione
(prototipo per intenderci), includi il .h negli altri moduli in cui
vuoi usare le funzioni e hai 2 scelte
- linkare i moduli assieme
- compilare come libreria e caricarla



Forse non ti e' ben chiara a cosa servono i file .h (include)
Sono dei file che vengono "inclusi" dal preprocessore in altri file prima
che questi ultimi vengano compilati.
In pratica quando si trova la linea #include <file.h> oppure #include
"file.h" la linea #include sparisce e viene sostituita con quello che e'
scritto in file.h. Viene quindi eseguito un "merge" tra i due file.
Questo e' comodo ad esempio per le dichiarazioni di funzioni che devono
essere riportate in tutti i moduli prima di essere chiamate.
Inserendo la dichiarazione in un file h l'utente di una particolare funzione
evita di doversi scrivere tutta la dichiarazione che ai fini pratici non gli
interessa evitando quindi lavoro noioso e fonte di errori.
 L'implementazione del codice poi viene fatta in un file c o in una libreria
( che non e' altro che una raccolta di moduli precompilati .obj) che viene
unita al programma chiamante dal linker.
Se vuoi fare delle funzioni riutilizzabili, quindi, devi scrivere il codice
in un file c e la dichiarazione delle funzioni e tutto quello che deve
essere utilizzato negli altri file in un file h.
Poi aggiungi al progetto il file c e nei moduli dove deve essere chiamata la
tua funzione includi il file h.
La differenza tra #include <file.h> e #include "file.h" e' che il primo va a
cercare il file .h nella directory include del tuo compilatore, mentre il
secondo cerca prima nella directory del progetto e poi eventualmente nella
directory include.
Un esempio di utilizzo dei file h e' la libreria "stdlib". Tu includendo il
file <stdlib> non devi dichirare la funzione printf o scanf perche' la loro
dichirazione e' scritta nel file h. Il codice poi e' nel file .lib
Questo a grandi linee sperando di non aver scritto stupidagini
Ciao
Giuseppe