會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





enum宣告問題
高級會員
註冊日期:
2006/06/06 08:38
所屬群組:
註冊會員
文章: 109
等級: 9; EXP: 45
HP : 0 / 211
MP : 36 / 8535
離線
我使用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日 08:45:15
轉換PDF檔 列印


Re: enum宣告問題
管理員
註冊日期:
2017/11/22 11:20
所屬群組:
站務管理者
註冊審核
文章: 87
等級: 8; EXP: 29
HP : 0 / 182
MP : 29 / 1253
離線
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:29
轉換PDF檔 列印


Re: enum宣告問題
高級會員
註冊日期:
2006/06/06 08:38
所屬群組:
註冊會員
文章: 109
等級: 9; EXP: 45
HP : 0 / 211
MP : 36 / 8535
離線
謝謝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:58
轉換PDF檔 列印


Re: enum宣告問題
管理員
註冊日期:
2010/06/30 16:18
來自 CAE, Microchip Technology Inc.
所屬群組:
站務管理者
註冊會員
文章: 1655
等級: 34; EXP: 34
HP : 0 / 833
MP : 551 / 23751
離線
Hi, 你說的網路範例, 我有搜尋到, 做了一點簡單研究,
這樣的用法, 應該是屬於C#的範疇, Standard C是不支援的,

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

3月25日 11:25:00
轉換PDF檔 列印


Re: enum宣告問題
高級會員
註冊日期:
2006/06/06 08:38
所屬群組:
註冊會員
文章: 109
等級: 9; EXP: 45
HP : 0 / 211
MP : 36 / 8535
離線
了解,謝謝AdamSyu熱心的回覆

今天 08:11:58
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project