所以我有一个类似于:
的typedef枚举typedef enum
{
CH1,
CH2,
CH3
} AIN_Ch_t;
这是在一个单独的文件中声明的。
所以在另一个文件中我想使用这个枚举。
以下是我认为应该是正确的:
//declare variable of type AIN_Ch_t
AIN_Ch_t channel1;
//use the variable as parameter in function compiler gives error
func1(channel1.CH1);
但是当我这样做时 - 没有错误:
func1(CH1); //no error. compiler likes.
显然,我正在考虑这一切都错了。有人可以澄清吗?谢谢!
答案 0 :(得分:2)
func1(channel1.CH1);
enums
没有像结构这样的成员。你做的不对。你能做的就是这个 -
AIN_Ch_t channel1;
channel1=CH1;
func1(channel1);
或者第二种方式 -
func1(CH1); // directly pass CH1 to function
答案 1 :(得分:0)
CH1
之类的枚举常量是常规标识符,与struct
或union
成员不同。它们与变量和函数名称位于同一名称空间中。
这意味着:
instance
.
constant
语法(例如struct
或{}来引用枚举常量{1}}成员; union
类型可以共享枚举常量名称; enum
类型可以使用常量名称,该名称也用作函数或变量名称。基本上,enum
是一种奇特的做法
enum
您可以使用前缀伪造名称空间:
const int CH1 = 0;
const int CH2 = 1;
...
它不漂亮,但它完成了这项工作。