Hide functions and global variables in the header file
<p>I created a program in C that can find the determinant of a matrix</p>

<pre><code>void fun1(); /*regardless of parameters they take*/
void fun2();
void fun3();
void fun4();
void fun5();

int global_var1; /*they are used among the above functions*/
int global_var2;
int global_var3;
int determinant;

int main(void){

int x,y;

for(x=0; x&lt;something ; x++){
    for (y=0 ; y&lt;another_thing; y++){
        fun1();
        fun2();
        fun3();
    }
 fun4();
 fun5();
}

printf("Determinant is: %d\n", determinant);

return 0;
}

void fun1(){/*code goes here to process the matrix*/;} 
void fun2(){/*code goes here to process the matrix*/;} 
void fun3(){/*code goes here to process the matrix*/;} 
void fun4(){/*code goes here to process the matrix*/;} 
void fun5(){/*code goes here to process the matrix*/;} 
</code></pre>

<p>Now I need to use this program to find the determinant of a given matrix in another project.
I created a header file, named it <code>"matrix.h"</code> and I replaced the <code>int main(void)</code> with <code>int find_determinant()</code> to be used in the new project.</p>

<p>the prototype of the second program:</p>

<pre><code>#include "matrix.h"

int main(void){
find_determinant(); /*regardless of para it takes, it works perfectly*/
return 0;}
</code></pre>

<p>it works properly, nothing wrong with it, but the only problem that if I want to give this header file <code>"matrix.h</code> to someone to use it in his program, he can know the signature of other functions (useless for him alone and confusing) that were used to help in finding the determinant in <code>int find_determinant()</code>.</p>

<p>My question is:
How can I hide (make them inaccessible) those functions and global variables and show only the <code>int find_determinant()</code> function in the second C file/program that contains <code>#include "matrix.h"</code> ?</p>