If I have something like the following in a header file, how do I declare a function that returns an enum of type Foo?
enum Foo
{
BAR,
BAZ
};
>
In C++, you could use just Foo.
In C, you must use enum Foo until you provide a typedef for it.
And then, when you refer to BAR, you do not use Foo.BAR but just BAR. All enumeration constants share the same namespace (the “ordinary identifiers” namespace, used by functions, variables, etc).
Hence (for C):
enum Foo { BAR, BAZ };
enum Foo testFunc(void)
{
return BAR;
}
Or, with a typedef:
typedef enum Foo { BAR, BAZ } Foo;
Foo testFunc(void)
{
return BAR;
}