簡體   English   中英

警告:#188-D:枚舉類型與另一種類型混合

[英]Warning: #188-D: enumerated type mixed with another type

static enum { TYPE = 'T',
                 [...]
} stage = TYPE; //as default

比我這樣聲明 function

void type_init(uint16_t position, uint8_t stage_state);

在 function 里面,我想以這種方式將 stage_state 的值傳遞到階段:

void type_init(uint16_t position, uint8_t stage_state){
     stage = stage_state;
}

這警告我,我不知道發生了什么。 這是怎么回事?

無論編譯器發出此警告,都希望有文檔解釋為什么最好 state 故意將任意整數轉換為枚舉類型。 你可以做得很好,但最好告訴編譯器你真的想要這樣做。 警告有待解決或繞過!

因此,轉換為enum類型以告訴您的編譯器您知道自己在做什么。 為此,您需要為其類型命名。 這是一個工作示例,它沒有給我gcc -std=c99 -Wall -Wextra -Wpedantic

#include <stdint.h>

static enum Stage {
    TYPE = 42
} stage;

int
main()
{
    uint8_t stage_state = 51;
    stage = (enum Stage) stage_state;

    return 0;
}

如果您不喜歡輸入enum State ,請查看如何使用typedef來避免它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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