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.
Hello,
Can anyone tell me how to instruct Keil to compile char's as unsigned char's by default?
I know that there are some help topics on this issue, but they seem to be giving a precompiler directive to tell the compiler to always compile char's as signed char's....
Thanks! Eric
I'm sorry, I am importing code from a project developed on another platform and for some reason I was thinking that "Uchar" was defined in Keil's libraries, but it isn't.
Anyways, here is how I have Uchar defined:
typedef unsigned char Uchar;
There is no #pragma SCH in my code anywhere that I can tell. I have searched "Find in Files" for both 'SCH' and '#pragma SCH,' nothing came up.
(So, I am still confused why I am getting the previously mentioned errors?)
Thanks, Eric
If you are importing code and want these warnings fixed quickly use:
--diag_suppress 167
in the misc controls under C/C++ of configure flash tools
The compiler is not considering char (that is unsigned by default) the same as unsigned char. It is considering them 2 different types that just happen to be the same.
U8 and/or u8 are defined in Keil, but guess what, they are not the same as char, they are the same as unsigned char (even though char is unsigned by default)
Okay, great, thanks!
So, when I receive a warning like this, I can ignore it and things should still function correctly?
Sure, have I ever steered you wrong?
(I have this warnig surpressed because I like to use u8's and chars without warnings.)
One more quick question, where do I put this diag_suppress line? is it a compiler directive and goes in a C file?
What's a negative A? Or negative '-'?
"Unsigned chars" make no sense. Unsigned 8-bit integers, yes, but not "chars".
Use char only, and always, when you mean human-readable characters alone or in strings. Use other typedefs for integer types.
Drew, I understand you Use char only, and always, when you mean human-readable characters alone or in strings. Use other typedefs for integer types. but do see a risk in your post being misinterpreted.
so,
TO PRESERVE DATA STORAGE USE (UNSIGNED) CHAR EVERY TIME IT WILL BE ENOUGH.
Erik
i.e.
Select Flash Select configure flash tools Select C++ add it to the line "misc controls"
Robert,
Thanks a lot for your help, that worked great.