title: Why does/did C allow implicit function and typeless variable declarations?
body: <p>Why is it sensible for a language to allow implicit declarations of functions and typeless variables? I get that C is old, but allowing to omit declarations and default to <code>int()</code> (or <code>int</code> in case of variables) doesn't seem so sane to me, even back then.</p>
  
  <p>So, why was it originally introduced? Was it ever really useful? Is it actually (still) used?</p>
  
  <p><em>Note: I realise that modern compilers give you warnings (depending on which flags you pass them), and you can suppress this feature. That's not the question!</em></p>
  
  <hr>
  
  <p>Example:</p>
  
  <pre><code>int main() {
    static bar = 7; // defaults to "int bar"
    return foo(bar); // defaults to a "int foo()"
  }
  
  int foo(int i) {
    return i;
  }
  </code></pre>