C#vs C默认枚举值

时间:2017-09-29 08:30:36

标签: c# c

在本网站上阅读多年(并获得许多有用的解决方案)之后,我该问一个问题了:)

我想知道默认的枚举值。我正在使用枚举将错误代码从MCU发送到PC(反之亦然)

定义这样的枚举

是一种很好的做法(也是安全的)

C:

typedef enum
{
no_error = 0,
error_1
error_2,
...
}

C#

enum
{
no_error = 0,
error_1,
error_2,
}

转移前,所有枚举值都会转换为Uint32。 我可以在C和C#方面始终假设error_1 = 1error_2=2吗?

我正在使用GCC编译器。

2 个答案:

答案 0 :(得分:2)

是的,两种语言都保证,如果您没有明确地将枚举值作为整数值给出,那么它比前一个枚举值多一个。

答案 1 :(得分:0)

如果以0开始枚举,则在C#中为是,则连续枚举应为连续数字。在你的例子中,no_error = 0,那么error_1将是1.同样在C中也是如此。比如在C中说,

NewList2 <- lapply(NewList, function(x) x[,!is.na(x)])