/* file1.c */ static void StaticFunction(void); void main(void) { StaticFunction(); } void StaticFunction(void) { /* something */ } /* file2.c */ void SomeFunction(void) { StaticFunction(); /* unresolved external symbol */ } In the example above StaticFunction was treated as static, although I changed my mind and removed the 'static' qualifier from its definition. But I forgot to change its declaration in the same file. Shouldn't the compiler have warned me? What does the ANSI C standard say about this?
I don't have my K&R to hand at the moment, and won't until tomorrow (local time). Meanwhile, you could try looking up "tentative" definitions. It's mentioned at http://www.eeng.brad.ac.uk/help/.packlangtool/.langs/.c/.ansi.html