Reputation: 669
I have a main directory A
with two sub directories B
and C
.
Directory B
contains a header file structures.c
:
#ifndef __STRUCTURES_H
#define __STRUCTURES_H
typedef struct __stud_ent__
{
char name[20];
int roll_num;
}stud;
#endif
Directory C
contains main.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 into main.c
?
Upvotes: 63
Views: 154873
Reputation: 1
#include<stdio.h>
#include<stdlib.h>
#include "parent_directory/structures.h>
int main()
{
stud *value;
value = malloc(sizeof(stud));
free (value);
printf("working \n");
return 0;
}
Replace your code with this and don't forget to replace parent_directory
with the path of the folder in which your file is...
I don't know whether your file structures.h
has .h
extension or .c
so please see to it...
Upvotes: -1
Reputation: 121
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.
Upvotes: 12
Reputation: 492
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.
Upvotes: 1
Reputation: 27240
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
Upvotes: 37
Reputation: 35069
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).
Upvotes: 72