Вопрос был о простой c функции, а не С++ static методы, как выяснено в комментариях.
Хорошо, я понимаю, что такое переменная static, но что такое функция static?
И почему это так, что если я объявляю функцию, скажем void print_matrix, пусть говорит a.c (БЕЗ a.h) и включает "a.c" - я получаю "[email protected]@....) already defined in a.obj", НО если я объявляю это как static void print_matrix, тогда он компилируется?
ОБНОВЛЕНИЕ Просто для того, чтобы прояснить ситуацию - я знаю, что включение .c является плохим, как многие из вас указали. Я просто делаю это, чтобы временно освободить место в main.c, пока у меня не будет лучшего представления о том, как сгруппировать все эти функции в правильные файлы .h и .c. Просто временное, быстрое решение.