Including a header file from another directory
Solution 1
When referencing to header files relative to your c file you should use #include "path/to/header.h"
The form #include <someheader.h>
is only used for internal headers or for explicitly added directories (in gcc with the -I
option).
Solution 2
write
#include "../b/structure.h"
in place of
#include <structures.h>
then go in directory in c & compile your main.c with
gcc main.c
Solution 3
If you work on a Makefile project or simply run your code from command line, use
gcc -IC main.c
where -I
option adds your C
directory to the list of directories to be searched for header files, so you'll be able to use #include "structures.h"
anywhere in your project.
Solution 4
If you want to use the command line argument then you can give gcc -idirafter ../b/ main.c
then you don't have to do any thing inside your program.
Manny
Updated on July 09, 2022Comments
-
Manny almost 2 years
I have a main directory
A
with two sub directoriesB
andC
.Directory
B
contains a header filestructures.c
:#ifndef __STRUCTURES_H #define __STRUCTURES_H typedef struct __stud_ent__ { char name[20]; int roll_num; }stud; #endif
Directory
C
containsmain.c
code:#include<stdio.h> #include<stdlib.h> #include <structures.h> int main() { stud *value; value = malloc(sizeof(stud)); free (value); printf("working \n"); return 0; }
But I get an 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)
What is the correct way to include the
structures.h
file intomain.c
?