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.
Hi Folks, I am trying to use enum to define a set of named constants with values so that they can be used by multiple C files in my project. For example. I use the following snipet to define Months in a headers file externals.h, and then If I then try to use it as follows in any of those files, it does not work.
enum MONTHS {M1 = 'Jan', M2 = 'Feb', M3 = 'Mar'}; .... .... extern enum MONTHS; // should it be extern enum MONTHS months; ? .... ..... SendByte (M1);//(This routine display M1 on my serial port).
I get error ---> (...error 230 MONTH unknown struct/union/enum tag)
What is the problem and how can I fix it ? I would like to get a better understanding of this enum business, if possible..
Thanks.
Bhal Tulpule
A controller must obviously work with a word size larger than two bytes, to be able to be partially big-endian and partially little-endian.
The most common is a 16-bit controller that are big or little endian for the native word size. But have dedicated instructions that allows two 16-bit registers to be saved/loaded as one 32-bit value. Like when 16'16 multiply produces a 32-bit result or 32/16 produces a 16-bit result. In that case, the instruction set may write the two registers in the wrong order.
Similar issues is of course possible when looking at 64-bit processors, or 32-bit processors with partial 64-bit support.
"...to be able to be partially big-endian and partially little-endian"
Or it could be implemented in software by the compiler