title: warning: pointer targets in passing argument 3 of 'Proc_Start' differ in signedness
body: <p>I have a problem with my C code for a stm32 target.</p>
  <p>I get this error :</p>
  <blockquote>
  <p>warning: pointer targets in passing argument 3 of 'Proc_Start' differ in signedness</p>
  </blockquote>
  <p>I can't really figure out why, I searched the web for similar topics but none of the solutions proposed in the topics helped me.</p>
  <p>I give you the code of where it breaks problem and the definition of the macro that registers the error</p>
  <p><strong>where the compilation generates the error</strong></p>
  <pre><code>void AppGestRelay_Init(u8 u8lvoie)
  {
  
  //Init Dac value for alim
  u16 u16lDacValue = (((41435.4-Param.vcoil[u8lvoie])/16376.2)/2.48)*1024;
  DrDac_SetValueChip(u8lvoie+1, u16lDacValue);
  
  //Init discharge mode
  mProcStartParam(AppGestRelay_DischargeMode, &amp;u8lvoie);
  
  //test
  TrackAlt[TRACK1] = ALTER_POS;
  
  TrackRunning[u8lvoie] = TRACK_NOT;
  }
  </code></pre>
  <p><strong>definition of the macro</strong></p>
  <pre><code>#define     mProcStart(fonct)               Proc_Start(fonct, NULL, (const s8*)#fonct)
  #define     mProcStartParam(fonct,param)    Proc_Start(fonct, (TProcParam)(param), #fonct)
  </code></pre>
  <p><strong>the function called with the macro</strong></p>
  <pre><code>P_PROC(AppGestRelay_DischargeMode)
  {
  
  static u8 u8lvoie;
  
  P_BEGIN;
  
  u8lvoie = *(u8*)P_PARAM;
  
  if(TRUE == Param.zener[u8lvoie])
  {
      PcfDataW.pin7[u8lvoie] = PIN_OFF;
      printf(&quot;on\r&quot;);
      P_DELAY(mTICK_MS(10));
      PcfDataW.pin7[u8lvoie] = PIN_ON;
      printf(&quot;off\r&quot;);
  }
  else
  {
      PcfDataW.pin6[u8lvoie] = PIN_OFF;
      printf(&quot;on\r&quot;);
      P_DELAY(mTICK_MS(10));
      PcfDataW.pin6[u8lvoie] = PIN_ON;
      printf(&quot;off\r&quot;);
  }
  
  P_EXIT();
  
  P_CLEANUP;
  
  P_END;
  }
  </code></pre>
  <p>Thank you very much for your future help</p>
  <p><strong>EDIT :</strong></p>
  <p>I already tried but adding a 3rd argument doesn't give a warning but an error saying that the macro only takes 2 parameters</p>
  <blockquote>
  <p>macro &quot;mProcStartParam&quot; passed 3 arguments, but takes just 2</p>
  </blockquote>
  <p>The code works by slightly modifying the AppGestRelay_Init() function but there is still the warning, I would like to know where it comes from</p>
  <p>Thanks :)</p>
  <pre><code>void AppGestRelay_Init(u8 u8lvoie)
  {
  static u8 u8lTrack;
  
  //Init Dac value for alim
  u16 u16lDacValue = (((41435.4-Param.vcoil[u8lvoie])/16376.2)/2.48)*1024;
  DrDac_SetValueChip(u8lvoie+1, u16lDacValue);
  
  //Init discharge mode
  u8lTrack = u8lvoie;
  mProcStartParam(AppGestRelay_DischargeMode, &amp;u8lTrack);
  
  //wait discharge mode is set
  while(Proc_IsActif(AppGestRelay_DischargeMode))
  {
  P_SCHEDULE();
  }
  
  TrackRunning[u8lvoie] = TRACK_NOT;
  }
  </code></pre>
  <p><strong>SOLVE :</strong></p>
  <p>the warning disappears by adding the (const s8*) in front of #fonct in the definition of mProcStartParam as it is the case in the definition of mProcStart</p>
  <pre><code>#define     mProcStartParam(fonct,param)    Proc_Start(fonct, (TProcParam)(param), (const s8*) #fonct)
  </code></pre>
  <p>Thanks</p>