title: C++ program written in C style doesn't compile with C compiler
body: <p>I'm a student, starting to learn C++ with some previous C knowledge. I have a working C++ code written in C style, that has an oveloaded function for input either a <code>double</code> or a <code>string</code>:  </p>
  
  <pre><code>#include "stdio.h"
  #include "string.h"
  #include "ctype.h"
  
  const int STR_LEN = 7;
  int try_to_input(double* real_number);
  int try_to_input(char (*string)[STR_LEN]);//line 16
  
  int main()
  {
      return 0;
  }
  
  int try_to_input(double* real_number) {//line 35
      int attempts_for_input = 3;
      //stops when == 0
      while (attempts_for_input) {
          //if input unsuccessful
          if (scanf_s("%lf", real_number) == 0) {
              puts("Invalid input! Try again.");
              attempts_for_input--;
              //flush stdin
              int tmp;
              while ((tmp = getchar()) != EOF &amp;&amp; tmp != '\n');
              //extra '\n' after that for some reason
          }
          else return 0;
      }
      return -1;
  }
  
  int try_to_input(char (*string) [STR_LEN] ) { //line 53
      int attempts_for_input = 3;
  
      while (attempts_for_input) {
          if (gets_s(*string, STR_LEN) == NULL) {
              puts("Invalid input! Try again.\n");
              attempts_for_input--;
              //flush stdin
              int tmp;
              while ((tmp = getchar()) != EOF &amp;&amp; tmp != '\n');
          }
          else return 0;
      }
      return -1;
  
  }
  </code></pre>
  
  <p>But when I compile it as C, it gives me the following errors:</p>
  
  <pre>
  (16): warning C4028: formal parameter 1 different from declaration
  (35): warning C4028: formal parameter 1 different from declaration
  (53): error C2084: function 'int try_to_input(double *)' already has a body
  (35): note: see previous definition of 'try_to_input'
  </pre>
  
  <p><hr>
  What could be the problem? What's wrong with my overloading?</p>