title: Can we call functions before defining it?
body: <pre><code>#include &lt;stdio.h&gt;
  
  void main()
  {
      m();
  }
  
  void m()
  {
      printf(&quot;hi&quot;);
  }
  </code></pre>
  <p><strong>Output</strong></p>
  <p><code>hi</code></p>
  <p><strong>Warnings</strong></p>
  <pre><code>main.c:11:10: warning: conflicting types for 'm' [enabled by default]
       void m()
            ^
  main.c:7:9: note: previous implicit declaration of 'm' was here
           m();
           ^
  </code></pre>
  <p>Why this program runs successfully even though <code>m()</code> is called before it is defined?
  And what is the meaning of the warning?</p>