2011-09-28 15 views
24

Ho una directory principale A con due sottodirectory B e C.Incluso un file di intestazione da un'altra directory

Directory B contiene un file di intestazione structures.c:

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

Directory C contiene main.c codice:

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

ma ottengo un errore:

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) 

Qual è il modo corretto a inc collegare il file structures.h a main.c?

+1

Qual è il compilatore che stai utilizzando? Per gcc dovresti dare un'occhiata al flag -I (vedi la pagina del manuale). Per altri compilatori consulta la documentazione. –

risposta

26

Quando si fa riferimento al file di intestazione relativa al tuo file c dovresti usare #include "path/to/header.h"

Il modulo #include <someheader.h> viene utilizzato solo per intestazioni interne o per directory esplicitamente aggiunte (in gcc con l'opzione -I).

+1

Si noti che questo è - in teoria - specifico per piattaforma/compilatore. "Il file sorgente nominato viene cercato in un modo definito dall'implementazione." (ISO/IEC 9899 sul file "#include" "") –

11

scrivere

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

al posto di

#include <structures.h> 

poi andare nella directory in c & compilare il main.c con

gcc main.c 
1

Se si vuole utilizzare l'argomento della riga di comando allora si può dare gcc -idirafter ../b/ main.c

allora non c'è bisogno di fare qualsiasi cosa all'interno del vostro programma.

1

Se si lavora su un progetto Makefile o semplicemente esegue il codice da linea di comando, utilizzare

gcc -IC main.c

dove -I opzione aggiunge la directory C alla lista di directory da ricercare file di intestazione, in modo sarai in grado di utilizzare #include "structures.h" ovunque nel tuo progetto.

Problemi correlati