/* 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?