Чтобы сохранить функции "приватными" или, что лучше, в пределах одного файла, вам нужно объявить их static
. В противном случае вы можете повторно объявить ту же функцию в другом файле и по-прежнему использовать ее.
Например:
#include "a.h" // without declaration of private_routine()
/*extern*/ int private_routine(); // by default every declaration behaves as with extern keyword, which means function is defined elsewhere
int main()
{
private_routine(); // can use here
return 0;
}
РЕДАКТИРОВАТЬ: И, как указано в комментариях, невозможно определить функцию с одним и тем же именем несколько раз в одном приложении, не объявив ее static
. Если вы определяете данное имя функции N раз, по крайней мере N-1 из них должно быть static
.