[英]Redefining an Enum/ Global Enum Value in 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(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]
如何將整數轉換為枚舉數?
您的代碼顯示了對C的工作方式的一些基本誤解。 例如,切換情況下的枚舉根本沒有意義。 枚舉在編譯時聲明值,而在運行時將開關用於控制流。
您應該找到有關C的初學者書籍,並從一些基本示例開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.