title: C30 PIC Compiler won't compile (MPLAB-X IDE)
body: <p>I am trying to compile a very simple program, I dont understand why it doesn't compile. Here is my program:</p>
  
  <pre><code>/* General includes */
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;libpic30.h&gt;
  #include &lt;p33FJ128GP804.h&gt;
  
  #include "RunLengthAlgorithm.h"
  //#include "RunLengthAlgorithm.c"
  
  int main(void) {
  
      int n;
      char source[10001];
      char target[100];
  
      for(n = 0; n &lt; 1000; ++n){
          source[n] = "A";
      }
      for(n = 1000; n &lt; 2000; ++n){
          source[n] = "B";
      }
      for(n = 2000; n &lt; 3000; ++n){
          source[n] = "C";
      }
      for(n = 3000; n &lt; 4000; ++n){
          source[n] = "D";
      }
      for(n = 4000; n &lt; 5000; ++n){
          source[n] = "E";
      }
      for(n = 5000; n &lt; 6000; ++n){
          source[n] = "F";
      }
      for(n = 6000; n &lt; 7000; ++n){
          source[n] = "G";
      }
      for(n = 7000; n &lt; 8000; ++n){
          source[n] = "H";
      }
      for(n = 8000; n &lt; 9000; ++n){
          source[n] = "I";
      }
      for(n = 9000; n &lt; 10000; ++n){
          source[n] = "J";
      }
      source[10001] = '\0';
  
      RLEncode(&amp;source, &amp;target);
  
      while(1);
      return (EXIT_SUCCESS);
  
  }
  </code></pre>
  
  <p>The .h and .c files are added to project.</p>
  
  <pre><code>#ifndef RUNLENGTHALGORITHM_H
  #define RUNLENGTHALGORITHM_H
  
  void RLEncode (char *source, char *target);
  
  #endif
  </code></pre>
  
  <p>And the .c file:</p>
  
  <pre><code>#ifndef RUNLENGTHALGORITHM_C
  #define RUNLENGTHALGORITHM_C
  void RLEncode (char *source, char *target){
      int n, k = 0;
      for(n = 0; source[n] != '\0'; ++n){
          int length = 1;
          while(source[n+1] != '\0' &amp;&amp; source[n] == source[n+1]){
              ++length; ++n;
          }
          target[k++] = length;
          target[k++] = source[n];
      }
      source[n] = '\0';
  }
  
  #endif
  </code></pre>
  
  <p>I am using MPLAB-X IDE whith C30 compiler and it gives me this error:</p>
  
  <pre><code>CLEAN SUCCESSFUL (total time: 1s)
  make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
  make[1]: Entering directory `D:/Datos (Disco)/Electronica/Multi portatil/Run-Length Algorithm.X'
  make  -f nbproject/Makefile-default.mk dist/default/production/Run-Length_Algorithm.X.production.hex
  make[2]: Entering directory `D:/Datos (Disco)/Electronica/Multi portatil/Run-Length Algorithm.X'
  Main.c: In function 'main':
  Main.c:24: warning: assignment makes integer from pointer without a cast
  Main.c:27: warning: assignment makes integer from pointer without a cast
  Main.c:30: warning: assignment makes integer from pointer without a cast
  Main.c:33: warning: assignment makes integer from pointer without a cast
  Main.c:36: warning: assignment makes integer from pointer without a cast
  Main.c:39: warning: assignment makes integer from pointer without a cast
  Main.c:42: warning: assignment makes integer from pointer without a cast
  Main.c:45: warning: assignment makes integer from pointer without a cast
  Main.c:48: warning: assignment makes integer from pointer without a cast
  Main.c:51: warning: assignment makes integer from pointer without a cast
  Main.c:55: warning: passing argument 1 of 'RLEncode' from incompatible pointer type
  Main.c:55: warning: passing argument 2 of 'RLEncode' from incompatible pointer type
  "C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=33FJ128GP804 -MMD -MF build/default/production/Main.o.d -o **build/default/production/Main.o Main.c 
  "C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=33FJ128GP804 -MMD -MF build/default/production/RunLengthAlgorithm.o.d -o build/default/production/RunLengthAlgorithm.o RunLengthAlgorithm.c 
  "C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe"   -omf=elf -mcpu=33FJ128GP804  -o dist/default/production/Run-Length_Algorithm.X.production.elf build/default/production/Main.o build/default/production/RunLengthAlgorithm.o build/default/production/RunLengthAlgorithm.o        -Wl,--defsym=__MPLAB_BUILD=1,-Tp33FJ128GP804.gld
  build/default/production/RunLengthAlgorithm.o(.text+0x0): In function `_RLEncode':
  : multiple definition of `_RLEncode'
  build/default/production/RunLengthAlgorithm.o(.text+0x0): first defined here
  c:\program files (x86)\microchip\mplab c30\bin\bin\..\bin/pic30-elf-ld.exe: Link terminated due to previous error(s).**
  make[2]: Leaving directory `D:/Datos (Disco)/Electronica/Multi portatil/Run-Length Algorithm.X'
  make[1]: Leaving directory `D:/Datos (Disco)/Electronica/Multi portatil/Run-Length Algorithm.X'
  **make[2]: *** [dist/default/production/Run-Length_Algorithm.X.production.hex] Error 255
  make[1]: *** [.build-conf] Error 2
  make: *** [.build-impl] Error 2
  
  BUILD FAILED (exit value 2, total time: 8s)**
  </code></pre>
  
  <p>I don't understand why, if I put my function inside Main.c and I dont't include #include "RunLengthAlgorithm.h" it works but I cannot get it working including a file.</p>