В предыдущем вопросе я спросил, я узнал, что я должен был использовать перечисление по какой-либо причине, чтобы определить свои ценности в следующем исходном коде:переосмысления в Enum/Global Enum значения в C
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, работающего на телефоне, и затем получает это значение. Однако, как видно здесь, я хочу превратить это целое число в счетчик (причина здесь: initializer element not constant?). Код содержит следующие ошибки:
../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]
Как преобразовать целое число в перечислитель?
Это не имеет большого смысла. Похоже, вы пытаетесь инициализировать глобальную статическую переменную тем, что, по-видимому, будет установлено только после вызова функции (т. Е. Во время выполнения). Перечисления - это константы, вы не можете изменить их значение. – Mat
@Mat Большое спасибо. Это помогло, я думаю, мне нужно изменить структуру этого кода. – AgentSpyname