Question
The question was about plain c functions, not c++ static
methods, as clarified in comments.
I understand what a static
variable is, but what is a static
function?
And why is it that if I declare a function, let's say void print_matrix
, in
let's say a.c
(WITHOUT a.h
) and include "a.c"
- I get
"print_matrix@@....) already defined in a.obj"
, BUT if I declare it as
static void print_matrix
then it compiles?
UPDATE Just to clear things up - I know that including .c
is bad, as
many of you pointed out. I just do it to temporarily clear space in main.c
until I have a better idea of how to group all those functions into proper
.h
and .c
files. Just a temporary, quick solution.
Answer
static
functions are functions that are only visible to other functions in
the same file (more precisely the sametranslation
unit).
EDIT : For those who thought, that the author of the questions meant a
'class method': As the question is tagged C
he means a plain old C function.
For (C++/Java/...) class methods, static
means that this method can be
called on the class itself, no instance of that class necessary.