Ok, I understand what is static variable is, but what is a "static" function?
And why is it that if I declare function let's say "void print_matrix" in let's say a.cpp (WITHOUT a.hpp) and include "a.cpp" - I get "print_matrix@@....) already defined in a.obj", BUT if I declare it "static void print_matrix" then it compiles?
UPDATE Just to clear things up - I know that including ".cpp" is bad, as many of you pointed out, I just do it to temporarily clear space in main.cpp until I have better idea of how to group all those functions into proper .hpp and .cpp. Just a temporary quick solution.