These are used during compilation, where multiple files A.c, B.c, C.c depend on some given function(s) in file D.c. The files A.c, B.c, C.c can be compiled using the information in the header file D.h only, which contains the function name and signature. The real code in D.c that has the logic you want to run is associated later, during linking.
How’s it going, I'm a Adam, a Full-Stack Engineer, actively searching for work. I'm all about JavaScript. And Frontend but don't let that fool you - I've also got some serious Backend skills.
Location
City of Bath, UK 🇬🇧
Education
10 plus years* active enterprise development experience and a Fine art degree 🎨
Be careful though, according to the video, you declare a function prototype in the header is clearer, otherwise people like myself would had wrote a real function in the header with logic (which I have done 😳).
Well, there are two terms here which are distinct - declaration, as Nested said, is giving a prototype of a function or a name of a variable.
void f()
Defining is giving the function it's body (the code of the function).
void f() { return; }
The declaration tells the compiler what to expect and a promise that we will give him that exact thing at some point later.
We can use this to our advatange - for instance by declaring all the functions at the top of the file and then defining them bellow, which helps us better organize the file for human reading.
Similarilay, you put the declarations in the header, and the definitions in the .c file.
You can also both declare and define the functions in the header file - these are called header only libraries (many cool ones available online). The problem with this is that if you have A.c, B.c, C.c, all of them will copy-paste all the functions from the h file into the end result, which can cause slower compilation and potential conflicts. This can by solved by using #ifndef (guards) or the #pragma once preprocessior directive.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
You can declare functions in header files:
These are used during compilation, where multiple files
A.c
,B.c
,C.c
depend on some given function(s) in fileD.c
. The filesA.c
,B.c
,C.c
can be compiled using the information in the header fileD.h
only, which contains the function name and signature. The real code inD.c
that has the logic you want to run is associated later, during linking.Be careful though, according to the video, you declare a function prototype in the header is clearer, otherwise people like myself would had wrote a real function in the header with logic (which I have done 😳).
Well, there are two terms here which are distinct - declaration, as Nested said, is giving a prototype of a function or a name of a variable.
void f()
Defining is giving the function it's body (the code of the function).
void f() { return; }
The declaration tells the compiler what to expect and a promise that we will give him that exact thing at some point later.
We can use this to our advatange - for instance by declaring all the functions at the top of the file and then defining them bellow, which helps us better organize the file for human reading.
Similarilay, you put the declarations in the header, and the definitions in the .c file.
You can also both declare and define the functions in the header file - these are called header only libraries (many cool ones available online). The problem with this is that if you have A.c, B.c, C.c, all of them will copy-paste all the functions from the h file into the end result, which can cause slower compilation and potential conflicts. This can by solved by using #ifndef (guards) or the #pragma once preprocessior directive.