我正在爲LPC1343微控制器編程一個皮層m3。當我編譯我的代碼時,我得到一行SetLed((eLeds_t *)h1, false);
錯誤,它說Error[Pe018]: expected a ")"
好像這個演員我做的不夠好,我猜。傳遞一個typedef枚舉作爲c參數拋出錯誤
遵循枚舉類型定義聲明和:
#ifndef _LEDS_h
#define _LEDS_h
#ifndef bool
typedef unsigned char bool;
# define true 1;
# define false 0;
#endif // ifndef bool
enum eLeds
{
noled, p1l, p1r, p2l, p2r, h1, h2
};
typedef enum eLeds eLeds_t;
void SetLed(eLeds_t led, bool action)
{
switch (led)
{
case p1l:
GPIOSetValue(PORT2, 5, action);
break;
case p1r:
GPIOSetValue(PORT2, 8, action);
break;
case p2l:
GPIOSetValue(PORT0, 9, action);
break;
case p2r:
GPIOSetValue(PORT0, 8, action);
break;
case h1:
GPIOSetValue(PORT0, 5, action);
break;
case h2:
GPIOSetValue(PORT0, 7, action);
break;
}
}
void leds_init(void)
{
GPIOSetDir(PORT2, 5, 1); // p1l
GPIOSetDir(PORT2, 8, 1); // p1r
GPIOSetDir(PORT0, 9, 1); // p2l
GPIOSetDir(PORT0, 8, 1); // p2r
GPIOSetDir(PORT0, 5, 1); // h1
GPIOSetDir(PORT0, 7, 1); // h2
LPC_IOCON->PIO2_5 &= ~0x07;
LPC_IOCON->PIO2_8 &= ~0x07;
LPC_IOCON->PIO0_9 &= ~0x07;
LPC_IOCON->PIO0_8 &= ~0x07;
LPC_IOCON->PIO0_5 &= ~0x07;
LPC_IOCON->PIO0_7 &= ~0x07;
eLeds_t value = h1;
SetLed(&value, false);
}
#endif // ifndef _LEDS_h
你爲什麼將枚舉值轉換爲指針? – Barmar
您可以聲明eLeds_t類型的本地並分配該「h1」。您可以將該變量的引用傳遞給函數。但你爲什麼要這麼做? – MKR
我無法重現該錯誤。你確定你正確地複製了代碼嗎? – Barmar