0

在我问的上一个问题中,我发现无论出于何种原因,我都必须使用枚举在以下源代码中定义我的值:

enum { key0_buffer = 0};
void process_tuple(Tuple *t)
{
    //Get key
    int key = t->key;

    //Get integer value, if present
    int value = t->value->int32;

    //Decide what to do
    switch(key) {
    case key_0:
        enum {key0_buffer = value};      
        break;
    };
}
...
static  WeatherAppDataPoint s_data_points[] = 
{
    {
        ...
        .high = key0_buffer,
    },   
};

在此代码中,旨在在 Pebble Watch(云 pebble.com)上运行,值来自在手机上运行的单独 JS 应用程序,然后接收该值。但是,如此处所见,我想将该整数转换为枚举器(原因在这里:初始化元素不是常量?)。代码吐出以下错误:

    ../src/app_data.c:120:5: error: a label can only be part of a statement and a declaration is not a statement
../src/app_data.c:120:11: error: enumerator value for 'key0_buffer' is not an integer constant
../src/app_data.c:109:9: error: variable 'value' set but not used [-Werror=unused-but-set-variable]

如何将整数转换为枚举数?

4

1 回答 1

0

您的代码显示了对 C 工作原理的一些基本误解。例如,开关盒中的枚举根本没有意义。枚举在编译时声明值,而在运行时使用开关进行控制流。

您应该找到一本 C 初学者书籍并从一些基本示例开始。

于 2015-05-16T16:03:43.220 回答