Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practice for using includes in C

Tags:

c

include

I am learning C and I am unsure where to include files. Basically I can do this in .c or in .h files:

Option 1

test.h

int my_func(char **var);

test.c

#include <stdio.h>
#include "test.h"
int my_func(char **var) {printf("%s\n", "foo");}
int main() {...}

Option 2

test.h

#include <stdio.h>
int my_func(char **var);

test.c

#include "test.h"
int my_func(char **var) {printf("%s\n", "foo");}
int main() {...}

With option 2 I would only need to include test.h in whatever .c file I need the library. Most of the examples I see use option 1.

Are there some general rules when to do what or is this a question of personal preferences?

like image 835
Spliffster Avatar asked Apr 09 '26 00:04

Spliffster


2 Answers

Don't use includes, you don't need.

I'd choose something like "Option 1". Why "something like" ? Because I'd create a separate file for the main and I'd keep all declaraions inside the .h and all definitions inside the corresponding .c.

Of course, both options are valid.

If you want to include only one header in your main, you can just create a header file, containing only includes - that's a common practice. This way, you can include only one header, instead of several.

like image 64
Kiril Kirov Avatar answered Apr 11 '26 12:04

Kiril Kirov


I tend to prefer Option 1, as cyclic dependencies will come and bite you very quickly in option 2, and reducing the input size is the best way to guarantee faster compile times. Option 2 tends towards including everything everywhere, whether you really need it or not.

That said, it might be best to experiment a little with what works for structuring your projects. Hard and fast rules tend to not apply universally to these kinds of questions.

like image 43
Gian Avatar answered Apr 11 '26 14:04

Gian



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!