title: Error C2371: redefinition; different basic types - why?
body: <p>I have the following code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  // helping
  void sortint(int numbers[], int array_size)
  {
    int i, j, temp;
  
    for (i = (array_size - 1); i &gt; 0; i--)
    {
      for (j = 1; j &lt;= i; j++)
      {
        if (numbers[j-1] &gt; numbers[j])
        {
          temp = numbers[j-1];
          numbers[j-1] = numbers[j];
          numbers[j] = temp;
        }
      }
    }
  }
  
  // exer1 - A
  
  void sort(int** arr, int arrsize) {
      int i = 0;
      // sort....
      for(; i &lt; arrsize; ++i) {
          sortint((*(arr+i))+1,  **(arr+i));
      }
  }
  
  // Exer1 - B
  
  void print(int** arr, int arrsize) {
      int i = 0, j, size, *xArr;
      for(; i &lt; arrsize; ++i) {
          size = **(arr+i);
          xArr = *(arr+i);
          printf("size: %d: ", size);
          // print elements
          for(j = 1; j &lt;= size; ++j) printf("[%d], ", *(xArr+j));
          printf("\n");
      }
  }
  
  // Exer2:
  
  void exera() {
      int* ptr = (int*)malloc(sizeof(int));
      if(!ptr) exit(-1);
      eb(ptr);
      free(ptr);
  }
  
  void eb(int* ptr) {
      int* arr = (int*) malloc(sizeof(int) * (*ptr));
      int i = 0;
      for(; i &lt; *ptr; ++i) scanf("%d", arr+i);
      ec(arr, *ptr);
  }
  
  void ec(int* arr, int size) {
      int i;
      sortint(arr, size);
      for(i = 0; i &lt; size; ++i) printf("[%d], ", *(arr+i));
  }
  
  int main() {
      // Exer1:
      int a[] = {4,3,9,6,7};
      int b[] = {3,2,5,5};
      int c[] = {1,0};
      int d[] = {2,1,6};
      int e[] = {5,4,5,6,2,1};
      int* list[5] = {a,b,c,d,e};
      sort(list, 5); // A
      print(list, 5); // B
      printf("\n\n\n\n\n");
      // Exer2:
      exera();
      fflush(stdin);
      getchar();
      return 0;
  }
  </code></pre>
  
  <p>I get these errors:</p>
  
  <pre><code>Error   2   error C2371: 'eb' : redefinition; different basic types
  source.c    56
  
  Error   4   error C2371: 'ec' : redefinition; different basic types 
  source.c    63
  
  Warning 1   warning C4013: 'eb' undefined; assuming extern returning int    
  source.c    52
  
  Warning 3   warning C4013: 'ec' undefined; assuming extern returning int    
  source.c    60
  </code></pre>
  
  <p>I tried to change function names - for nothing.</p>
  
  <p>Why is that error is being shown? I'm using Visual C++ Express 2010.</p>