以前の質問で、次のソース コードで値を定義するには、何らかの理由で列挙型を使用する必要があることがわかりました。
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 (cloud 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]
整数を列挙子に変換するにはどうすればよいですか?