• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






enum宣告問題
#1
高級會員
高級會員


查看用戶資訊
我使用MCC功能產生A/D程式,它有宣告enum如下
typedef enum
{
channel_Temp = 0x1D,
channel_DAC = 0x1E,
channel_FVR = 0x1F
} adc_channel_t;

寫程式 ADC_GetConversion(adc_channel_t.channel_DAC)
XC8(v2.10)編輯後發生錯誤
main.c:54:27: error: unexpected type name 'adc_channel_t': expected expression
改成ADC_GetConversion(channel_DAC),就正常了
這是為什麼?

我覺得enum的方式很好用,adc_channel_t: 再打”.”時,可以跳出channel_Temp、channel_DAC、channel_FVR
讓我選,我覺得滿方便的,寫程式也可以有一致性
請問有什麼方式可以解決嗎???


另外
#define LED_R_on LATBbits.LATB6=1;
#define LED_R_off LATBbits.LATB6=0;
是否也可以用enum的方式,讓它帶出on與off的功能

發表於: 3/20 8:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: enum宣告問題
#2
管理員
管理員


查看用戶資訊
typedef enum
{
channel_Temp = 0x1D,
channel_DAC = 0x1E,
channel_FVR = 0x1F
} adc_channel_t;

上述是enum的型別定義,
所以adc_channel_t 是一個enum型別, 不是enum變數, 更不是結構,
因為是enum類別, 所以MCC會協助在輸入'.'時, 告訴你有哪寫enum的值可以用, 詳細可以去google enum的用法

正確用法應宣告
adc_channel_t MyChannel;
此時 MyChannel的內容被限定在adc_chanel_t的enum 三個值的範圍內, 如果MyChannel給定的值不在adc_chanel_t內, compiler會Error,
比如 :
MyChannel = channel_DAC; <-- 合法
MyChannel = 0x01; <-- 不合法(沒定義在enmu內)

所以你的程式如果改為以下方式就會正常
adc_channel_t MyChannel;
MyChannel = channel_DAC;
ADC_GetConversion(MyChannel)

發表於: 3/20 11:07
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: enum宣告問題
#3
高級會員
高級會員


查看用戶資訊
謝謝Libra的回覆

MyChannel = channel_DAC;
ADC_GetConversion(MyChannel)
如果是MyChannel = channel_DAC;
撰寫程式時,並不能很快速去選擇我想要的成員
上述的寫法方式,那跟#define channel_DAC 0x1E差不多
只能記住成員再去key出成員


我在網路上看到的範例為
enum GameStatus
{
Menu,
Loading,
Playing,
Pause,
GameOver
}

enum 取值方式為:
GameStatus status = GameStatus.Menu;
它也是使用"."的選取成員
但在MPLAB X上卻不行!!

發表於: 3/20 11:42
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: enum宣告問題
#4
管理員
管理員


查看用戶資訊
Hi, 你說的網路範例, 我有搜尋到, 做了一點簡單研究,
這樣的用法, 應該是屬於C#的範疇, Standard C是不支援的,

詳細的說明可以參考微軟的資料...
https://docs.microsoft.com/zh-tw/dotne ... erence/builtin-types/enum

發表於: 3/25 11:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: enum宣告問題
#5
高級會員
高級會員


查看用戶資訊
了解,謝謝AdamSyu熱心的回覆

發表於: 3/30 8:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]