We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Howcome is it that the following code:
#include <string.h> static unsigned char buf[ 20]; void func( void) { strcpy( buf, "huuhaa"); }
huuhaa.c(7): warning: #167-D: argument of type "unsigned char *" is incompatible with parameter of type "char *"
extern unsigned char *strcpy (unsigned char *s1, const unsigned char *s2);
The header file you are looking at is the CARM header file. But you are using the RealView Compiler which uses the header file in the folder ARM\RV30\INC\STRING.H. This header file defines the string functions with plain char datatypes and therefore a cast operation is required to avoid warnings.
void func( void) { strcpy( (char *) buf, "huuhaa"); }
In that case uVision opens the wrong file when right clicking the included file name and selecting 'Open document'.
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.