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
You have posted NOTHONG showing that the brief was 'wrong' only kept on that it was not exhaustive enough for you.
Others have already explained to you what you got wrong and expanded in detail. There is little point in my rehashing the same thing. In spite of their clear explanations you still seem determined that the fault cannot lie with you, and that I should take issue with the author of a book I've never read (bar one sentence quoted out of context, originally misattributed to the 'C' standard).
I originally described you as ignorant, I'm beginning to suspect that stupid would be more appropriate.
YOU are entitled to YOUR opinion. As far as 'describing' you, what comes to mind is 'stubborn' which is not necessarily bad.
i just hope that the OP has not gotten the impression from your postings that char and unsigned char is the same.
Have fun,
Erik
The whole point is:
There are 3 distint char types
char unsigned char signed char
They are 3 different types. No matter how they are interrepted, none of the 3 types are "the same".
achar may have the same range of values as either signed char or unsigned char, and this is up to the implementer of the compiler to decide, and possibly if they are nice allow you to change the default.
Even if char has the same range of values as unsigned char, they are not the same type, therefore the warning that the compiler generated for them.
Also even if char has the same range of values as signed char, they are not the same type and this would also generate a warning (at least in keil/Realview ARM compiler)
It appears (erik with a k) that your compiler (non ARM, looks like 8051) defaults to char and signed char having the same range, but they still are not the same type. Other compilers (as the standard "clearly" states) may and do chose char to have the same range as unsigned char, but still they are not the same type.
do chose char to have the same range as unsigned char, but still they are not the same type.
This is pure language and the following is not 'you are wrong' just another (I think equally valid) interpretation of the language
"do chose char to have the same range as unsigned char, which makes them the same"
No.
The char type is NEVER the same type as unsigned char or signed char.
They are 3 different types. They are not the same
char is defined to have the same range as signed char or unsigned char, but not to be the same type as.
The problem (Eric with a C) had was that the types unsigned char and char where mixed and the compiler was giving warnings (because they are not the same type).
Becuase we set the default to interrpret char as having the same range as unsigned char, we could ignore the warnings.
I'm sure he doesn't share your talent for misunderstanding.
Let me see if I understand you.
This particular compiler treat unsigned char and char the same way, but because someone may assume that it is done the other way the compiler complain when you mix the two.
Thus, if your 'understanding' of (un)signed char and char is the same as the compiler it is safe to ignore the warning. (I disagree here: I would never consider it safe to ignore a warning - but that is a different story)
am I right?
When accused of being ignorant rather than getting a simple statement (maybe with a reference), I have no reason to put any credence to the response from the accuser. Robert, since you gave me a 'sane' explanation, I will admit that my 'knowledge' based on a statement in (was it) '87 by the instructor of the C class I then took: "char and signed char is the same" may have changed since then/been wrong. He actually added "to be clear always state (un)signed char, never just char". I have NEVER used just 'char' (I like to be specific as well) thus there has never been a reason to believe that statement from '87 and Kochans seeming agreement with it was incorrect.
I wonder if Jack Sprat peruses several books to verify his knowledge before posting, I doubt it, so it is very possible that at some time it will be him that is "the grossly opinionated that show his ignorance with such panache"
TYPO, TYPO, TYPO
the line in the post above: specific as well) thus there has never been a reason to believe that
should read
specific as well) thus there has never been a reason not to believe that
and that after a preview :(
When accused of being ignorant rather than getting a simple statement (maybe with a reference), I have no reason to put any credence to the response from the accuser.
The expectation is that you would have the wit to actually consult the document you claim to be quoting. You rarely hesitate to lambast others for failing to Please read the manual.
I will admit that my 'knowledge' based on a statement in (was it) '87 by the instructor of the C class I then took:
Now you're blaming a 'C' class you took 19 years ago?
I wonder if Jack Sprat peruses several books to verify his knowledge before posting
No, I just consult the 'C' standard. That way I get the right information first time.
so it is very possible that at some time it will be him that is "the grossly opinionated that show his ignorance with such panache"
Dream on.
I expressed a possibility, not a desire.
Perhaps you should buy a dictionary at the same time as a copy of the 'C' standard:
dream on
Informal
Used in the imperative to indicate that a statement or suggestion is improbable or unrealistic.
dictionary.reference.com/search
I have NEVER used just 'char' (I like to be specific as well)
On "modern" compilers, this will cause a warning every time you call a string library function, this is because they are defined using "Just plain char" (i.e. int strlen(char *str) ). What do you do with these warnings?
Nothing, I do not use "string library functions". I am a 'speed freak' because of therequirements of what I produce, and those two are mutually exclusive.
Now I understand everything.