2011-09-28 15 views
24

Tengo un directorio principal A con dos subdirectorios B y C.Incluyendo un archivo de encabezado de otro directorio

Directorio B contiene un archivo de cabecera structures.c:

#ifndef __STRUCTURES_H 
#define __STRUCTURES_H 
typedef struct __stud_ent__ 
{ 
    char name[20]; 
    int roll_num; 
}stud; 
#endif 

Directorio C contiene main.c código:

#include<stdio.h> 
#include<stdlib.h> 
#include <structures.h> 
int main() 
{ 
    stud *value; 
    value = malloc(sizeof(stud)); 
    free (value); 
    printf("working \n"); 
    return 0; 
} 

pero me da un error:

main.c:3:24: error: structures.h: No such file or directory 
main.c: In function ‘main’: 
main.c:6: error: ‘stud’ undeclared (first use in this function) 
main.c:6: error: (Each undeclared identifier is reported only once 
main.c:6: error: for each function it appears in.) 
main.c:6: error: ‘value’ undeclared (first use in this function) 

Cuál es la forma correcta inc lude el archivo structures.h en main.c?

+1

¿Cuál es el compilador que está utilizando? Para gcc, debería ver el indicador -I (vea la página del manual). Para otros compiladores revisa la documentación. –

Respuesta

26

Cuando se hace referencia a archivos de cabecera relativa a su archivo c debe usar #include "path/to/header.h"

El formulario #include <someheader.h> solo se usa para encabezados internos o para directorios explícitamente agregados (en gcc con la opción -I).

+1

Tenga en cuenta que esto es, en teoría, específico de plataforma/compilador. "El archivo fuente nombrado se busca de una manera definida por la implementación". (ISO/IEC 9899 en el archivo '#include' "') –

11

escribir

#include "../b/structure.h" 

en lugar de

#include <structures.h> 

luego ir en el directorio en c & compilar su main.c con

gcc main.c 
1

Si desea utilizar el argumento de línea de comandos a continuación, puede dar gcc -idirafter ../b/ main.c

entonces usted no tiene que hacer cualquier cosa dentro de su programa.

1

Si usted trabaja en un proyecto Makefile o simplemente ejecutar el código desde la línea de comandos, utilice

gcc -IC main.c

donde -I opción añade el directorio C a la lista de directorios que se debe buscar los archivos de cabecera, por lo Podrá usar #include "structures.h" en cualquier lugar de su proyecto.

Cuestiones relacionadas