Desidero essere in grado di creare una raccolta di funzioni in un file di intestazione che potrei includere #include in uno dei miei programmi C.Come creare file di intestazione C
risposta
- Aprite il vostro editor di testo preferito
- Creare un nuovo file chiamato whatever.h
- Metti la tua prototipi di funzioni in esso
FATTO.
Esempio whatever.h
#ifndef WHATEVER_H_INCLUDED
#define WHATEVER_H_INCLUDED
int f(int a);
#endif
Nota: sono le protezioni (comandi del preprocessore) aggiunto grazie a Luca. Evitano di includere lo stesso file di intestazione due volte nella stessa compilation. Un'altra possibilità (citata anche nei commenti) è aggiungere #pragma once
ma non è garantito il supporto per ogni compilatore.
Esempio whatever.c
#include "whatever.h"
int f(int a) { return a + 1; }
E poi si può includere "whatever.h" in qualsiasi altro file .c, e collegarlo con il file oggetto di whatever.c.
Ti piace questa:
sample.c
#include "whatever.h"
int main(int argc, char **argv)
{
printf("%d\n", f(2)); /* prints 3 */
return 0;
}
compilarlo (se si usa GCC):
$ gcc -c whatever.c -o whatever.o
$ gcc -c sample.c -o sample.o
per collegare i file per creare un file eseguibile:
$ gcc sample.o whatever.o -o sample
È possibile eseguire il test sample:
$ ./sample
3
$
si potrebbe voler menzionare le guardie di intestazione – luke
@luke: Grazie mille. Non ho idea di cosa siano le protezioni dell'intestazione. Andando a google ora. Grazie ancora. –
@luke: oh! Io vedo. Buon punto Andando ad aggiungerli. –
I file di intestazione possono contenere qualsiasi codice C valido, poiché vengono iniettati nell'unità di compilazione dal pre-processore prima della compilazione.
Se un file di intestazione contiene una funzione ed è incluso in più file .c
, ciascun file .c
riceverà una copia di tale funzione e ne creerà un simbolo. Il linker si lamenterà dei simboli duplicati.
È tecnicamente possibile creare le funzioni static
in un file di intestazione per l'inclusione in più file .c
. Anche se questo non viene generalmente fatto perché si rompe dalla convenzione che il codice si trova nei file .c
e le dichiarazioni si trovano nei file .h
.
Vedere le discussioni in C/C++: Static function in header file, what does it mean? per ulteriori spiegazioni.
- 1. File di intestazione C e compilazione/collegamento
- 2. Emacs C++, aprendo corrispondente file di intestazione
- 3. file di intestazione dell'interfaccia C++/cli
- 4. Come posso analizzare un file di intestazione C con Perl?
- 5. Maiuscole/minuscole nei file di intestazione C++
- 6. Come creare un file di intestazione C utilizzando lo strumento Javah
- 7. C++ Ordine di intestazione
- 8. come collegare i file di intestazione in C++
- 9. Come usare gdb su file di intestazione C++?
- 10. YouCompleteMe, file di intestazione
- 11. Costi di inclusione di file di intestazione in Objective-C
- 12. convertire il file di intestazione C++ nel file protobuf .proto
- 13. C/C++: funzione statica nel file di intestazione, cosa significa?
- 14. qual è la differenza tra i file di intestazione c (.h) e i file di intestazione C++ (.hpp)
- 15. Dipendenze dei file di intestazione tra i moduli C++
- 16. C++ Includi intestazione problema
- 17. C: Qual è l'uso di "extern" nei file di intestazione?
- 18. Dichiarazione di intestazione e file di intestazione C++ che termina con "= 0"
- 19. Come creare uno spinner con intestazione?
- 20. File di intestazione e intestazione di pura funzione virtuale di C++
- 21. Domanda di base sull'inclusione dei file di intestazione C++?
- 22. Dichiarazione di vettori in un file di intestazione C++
- 23. Intestazione per file sorgente
- 24. Quando inserire la funzione C++ nel file di intestazione
- 25. Dove sono i file di intestazione C in Windows?
- 26. Commentando codice, intestazione e di origine file C
- 27. Android/layout: come creare un layout di intestazione-contenuto
- 28. Come generare il file di intestazione JNI in Eclipse
- 29. Funzione inline nel file di intestazione in C
- 30. C append a un array nel file di intestazione
con un editor di testo? – stefanB
Se seguo correttamente, ciò che si desidera è creare una libreria, simile alle librerie C standard in modo da includere un file di intestazione con le definizioni di funzione, quindi collegarlo a quella libreria quando si costruisce l'eseguibile finale. È giusto? –
Sì, hai ragione. – user340838