簡體   English   中英

在C中重新定義枚舉/全局枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM