2010-05-14 27 views
59

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

+43

con un editor de texto? – stefanB

+12

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? –

+0

Sí, tienes razón. – user340838

Respuesta

133
  1. abrir el editor de texto favorito
  2. Crear un nuevo archivo llamado whatever.h
  3. 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 
$ 
+7

es posible que desee mencionar guardias de encabezado – luke

+0

@luke: Muchas gracias. No tengo idea de qué son los protectores de los titulares. Ir a google ahora Gracias de nuevo. –

+0

@luke: ¡oh! Ya veo. Buen punto. Voy a agregarlos. –

2

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.

Cuestiones relacionadas