"print_matrix@@....) already defined in a.obj"
static void print_matrix
static functions are functions that are only visible to other functions in the same file (more precisely the same translation 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.