This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Pointer Incrementing Warning

Hi Friends,
I'm Currently working on C51v6.02 developed by Keil, I'm facing a problem with the compiler when I compile a similar code like this

main()
{
   char xdata *Data_Ptr = 0x0000; /* Pointer to the 0x000 location */

   while(some loop)
   *Data_Ptr++; /* Points to the next data location on the RAM-- here 0x0001 */
}

when I compile this it gives the following warning message,
 .\FILENAME(LINENUMBER): warning C275: FILENAME: expression with possibly no effect 

Is there any way to avoid this warning message?? Thank you,

With Regards,
Yaswanth

Proudly wasting time since 1981 

Parents
  • Hmm... Not sure what "the correct way" means. But the rest of the world increments a pointer this way:

    Data_Ptr++;
    
    Of course, there are other ways:
    ++Data_Ptr;
    or
    Data_Ptr += 1;
    or
    Data_Ptr = Data_Ptr + 1;
    
    Or you can do it this way:
    *Data_Ptr++;
    this expression is same as
    *(Data_Ptr++);
    or
    Data_Ptr += 1, *Data_Ptr;
    
    But the dereferencing operator * is absolutely unnecessary because its result is not used. That's why the compiler gives the warning.
    Regards,
    - Mike

Reply
  • Hmm... Not sure what "the correct way" means. But the rest of the world increments a pointer this way:

    Data_Ptr++;
    
    Of course, there are other ways:
    ++Data_Ptr;
    or
    Data_Ptr += 1;
    or
    Data_Ptr = Data_Ptr + 1;
    
    Or you can do it this way:
    *Data_Ptr++;
    this expression is same as
    *(Data_Ptr++);
    or
    Data_Ptr += 1, *Data_Ptr;
    
    But the dereferencing operator * is absolutely unnecessary because its result is not used. That's why the compiler gives the warning.
    Regards,
    - Mike

Children