Deseo poder crear una colección de funciones en un archivo de encabezado que pueda #incluir en uno de mis programas C.Cómo puedo crear archivos de encabezado C
Respuesta
- abrir el editor de texto favorito
- Crear un nuevo archivo llamado whatever.h
- Ponga sus prototipos de funciones en ella
HECHO.
Ejemplo whatever.h
#ifndef WHATEVER_H_INCLUDED
#define WHATEVER_H_INCLUDED
int f(int a);
#endif
Nota: incluyen guardias (comandos del preprocesador) añaden gracias a Luke. Evitan incluir el mismo archivo de encabezado dos veces en la misma compilación. Otra posibilidad (también mencionada en los comentarios) es agregar #pragma once
, pero no se garantiza que sea compatible con todos los compiladores.
Ejemplo whatever.c
#include "whatever.h"
int f(int a) { return a + 1; }
Y a continuación, puede incluir "whatever.h" en cualquier otro archivo .c, y vincularlo con el fichero objeto de whatever.c.
De esta manera:
Ejemplo.c
#include "whatever.h"
int main(int argc, char **argv)
{
printf("%d\n", f(2)); /* prints 3 */
return 0;
}
compilarlo (si se utiliza GCC):
$ gcc -c whatever.c -o whatever.o
$ gcc -c sample.c -o sample.o
Para vincular los archivos para crear un archivo ejecutable:
$ gcc sample.o whatever.o -o sample
Puedes probar muestra:
$ ./sample
3
$
es posible que desee mencionar guardias de encabezado – luke
@luke: Muchas gracias. No tengo idea de qué son los protectores de los titulares. Ir a google ahora Gracias de nuevo. –
@luke: ¡oh! Ya veo. Buen punto. Voy a agregarlos. –
Archivos de cabecera puede contener cualquier código C válido, ya que se inyectan en la unidad de compilación por el pre-procesador antes de la compilación.
Si un archivo de encabezado contiene una función y está incluido en varios archivos .c
, cada archivo .c
obtendrá una copia de esa función y creará un símbolo para ella. El vinculador se quejará de los símbolos duplicados.
Es técnicamente posible crear static
funciones en un archivo de cabecera para incluirlas en varios archivos .c
. Aunque esto generalmente no se hace porque se rompe con la convención de que el código se encuentra en .c
archivos y declaraciones se encuentran en .h
archivos.
Consulte las discusiones en C/C++: Static function in header file, what does it mean? para obtener más información.
- 1. cómo vincular archivos de encabezado en C++
- 2. ¿Cómo puedo crear archivos .chm a partir del código C#?
- 3. C funciones sin archivos de encabezado
- 4. Convertir archivos de encabezado C++ a Python
- 5. Crear archivos en C++
- 6. ¿Cómo funcionan los archivos de encabezado y fuente en C?
- 7. Comentando código C, encabezado y archivos fuente
- 8. ¿Dónde busca gcc los archivos de encabezado C y C++?
- 9. ¿Cómo crear archivos .odt con C# .NET?
- 10. Costo de incluir archivos de encabezado en Objective-C
- 11. ¿Compila un C++ .lib con solo archivos de encabezado?
- 12. Archivos de encabezado no encontrados
- 13. Crear archivos en Objective-C
- 14. C Archivos de encabezado - Forma correcta de incluir
- 15. Una comprensión básica de los archivos de encabezado de C++
- 16. Confusión con encabezado y archivos de implementación en Objective-C
- 17. crear archivos XML de programa en C++
- 18. C/C++ Documentación del archivo de encabezado
- 19. C++: ¿Cómo puedo crear plantilla dinámica tipo
- 20. Ventajas/desventajas de los archivos de encabezado
- 21. ¿Cómo crear spinner con el encabezado dentro?
- 22. incluyendo archivos de encabezado de diferentes directorios?
- 23. ¿Dónde busca Visual Studio los archivos de encabezado C++?
- 24. ¿Cómo encuentra un compilador C/C++ las definiciones de prototipos en archivos de encabezado?
- 25. C/C++: ¿Cómo averiguar la cadena de archivos de encabezado para una definición dada?
- 26. ¿Cómo puedo abrir archivos en C#
- 27. Encabezados precompilados en archivos de encabezado
- 28. Cómo usar archivos de encabezado precompilados en Android NDK
- 29. crear archivos, crear directorios recursivamente
- 30. AngularJS: ¿Cómo puedo crear controladores en varios archivos
con un editor de texto? – stefanB
Si sigo correctamente, lo que quiere es crear una biblioteca, similar a las bibliotecas estándar de C para que incluya un archivo de cabecera con la definición de funciones, a continuación, enlazar con la biblioteca cuando la construcción de su ejecutable final. ¿Está bien? –
Sí, tienes razón. – user340838