第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在C中定義枚舉類型(枚舉)?

如何在C中定義枚舉類型(枚舉)?

C
飲歌長嘯 2019-11-21 15:04:47
我不確定使用C枚舉的正確語法是什么。我有以下代碼:enum {RANDOM, IMMEDIATE, SEARCH} strategy;strategy = IMMEDIATE;但這無法編譯,并出現(xiàn)以下錯誤:error: conflicting types for ‘strategy’error: previous declaration of ‘strategy’ was here我究竟做錯了什么?
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

聲明枚舉變量是這樣完成的:


enum strategy {RANDOM, IMMEDIATE, SEARCH};

enum strategy my_strategy = IMMEDIATE;

但是,您可以使用a typedef來縮短變量聲明,如下所示:


typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;

strategy my_strategy = IMMEDIATE;

有一個命名約定來區(qū)分類型和變量是一個好主意:


typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy_type;

strategy_type my_strategy = IMMEDIATE;


查看完整回答
反對 回復 2019-11-21
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

這是值得指出的是,你并不需要一個typedef。你可以像下面這樣


enum strategy { RANDOM, IMMEDIATE, SEARCH };

enum strategy my_strategy = IMMEDIATE;

您是否喜歡這是一個風格問題typedef。沒有它,如果要引用枚舉類型,則需要使用enum strategy。有了它,您可以說strategy。


兩種方式各有利弊。一個比較羅word,但將類型標識符保留在標記名稱空間中,在這里它們不會與普通標識符沖突(請考慮struct stat和stat函數:它們也不會沖突),并且您會立即看到它是一種類型。另一個較短,但是將類型標識符帶入普通名稱空間。


查看完整回答
反對 回復 2019-11-21
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您嘗試聲明strategy兩次,這就是為什么您遇到上述錯誤的原因。以下作品沒有任何投訴(與一起編譯gcc -ansi -pendantic -Wall):


#include <stdio.h>


enum { RANDOM, IMMEDIATE, SEARCH } strategy = IMMEDIATE;


int main(int argc, char** argv){

    printf("strategy: %d\n", strategy);


    return 0;

}

如果不是上述內容,則將第二行更改為:


...

enum { RANDOM, IMMEDIATE, SEARCH } strategy;

strategy = IMMEDIATE;

...

從警告中,您可以輕松看到您的錯誤:


enums.c:5:1: warning: data definition has no type or storage class [enabled by default]

enums.c:5:1: warning: type defaults to ‘int’ in declaration of ‘strategy’ [-Wimplicit-int]

enums.c:5:1: error: conflicting types for ‘strategy’

enums.c:4:36: note: previous declaration of ‘strategy’ was here

因此,編譯器接受strategy = IMMEDIATE了一個聲明為strategydefault type 的變量的聲明int,但是之前已經有一個使用此名稱的變量聲明。


但是,如果您將分配放在main()函數中,則它將是有效的代碼:


#include <stdio.h>


enum { RANDOM, IMMEDIATE, SEARCH } strategy = IMMEDIATE;


int main(int argc, char** argv){

    strategy=SEARCH;

    printf("strategy: %d\n", strategy);


    return 0;

}


查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 1404 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號