These code snippets come from a Dhrystone test we are using to evaluate ARM MDK and some ARM devices. The program works well but I have run across a construct that I do not understand. I hope some of you experts can point out what I'm missing.
In a header file an enum- typedef enum {Ident_1,Ident_2,Ident_3,Ident_4} Enumeration;
In main() there is a declaration- Enumeration Func_1(); /* forward declaration since Enumeration may not be int */
I have looked in my 'C' books and googled enum and Enumeration but failed to find any construct examples such as this. Of course I found the normal 'day of the week' and 'color' examples in many locations.
I have no problems with the code. I just don't understand the constructs.
Any guidance would be appreciated. Bradford
Sorry, and in the context of the OP, take the "typedef" prefix off -- now what type is the object?
Thanks Dan for the additional information. The following comment in the code indicates the return may not be a standard enum int and I believe if we left the typedef we would expect a return of int.
/* forward declaration since Enumeration may not be int */
I'm not sure I fully understand the forward declaration but following the code there are many lines with a definite taste of ADA. So, it would appear the test code is written to support a number of different compilers. I don't plan to go deeper into the code at this time. We can run the code against different compiler/ARM implementations and get reasonable results. It's a tool and it works so I'll leave it be. Thanks again for the additional insight. Bradford
I think I more clearly understand your question and the intent of the code. From The Standard:
"An implementation may delay the choice of which integer type until all enumeration constants have been seen."
So, my take on it is that "your" coders were trying to "forward declare" a range-limited enumeration that would allow an implementation to choose (and possibly narrow) the size of the enumerated type.