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

Warning 167

Howcome is it that the following code:

#include <string.h>

static unsigned char buf[ 20];

void func( void)
{
   strcpy( buf, "huuhaa");
}
gives warning:
huuhaa.c(7): warning:  #167-D: argument of type "unsigned char *" is incompatible with parameter of type "char *"
even though strcpy prototype in string.h is:
extern unsigned char *strcpy   (unsigned char *s1, const unsigned char *s2);
??

Parents Reply Children
  • Further..

    The compiler documentation says that the basic type char defaults to unsigned char (compiler option --unsigned_chars). Why the warning?

    One of the MISRA rules states that the char type must always be declared signed or unsigned. There must be a good reason for this rule.

    I know I can suppress the warning with --diag_suppress, but I don't think it is a good idea either.