moi,
kuinkas tälläinen pitäis tehdä, ettei kääntäjä herjais siitä.
käytän kääntäjänä sdcc kääntäjää.
#define FSM_RESET() \
do { \
INT_ENABLE (INUM_RF, INT_OFF); \
SPP_DISABLE_TIMEOUT(); \
sppIntData.mode = SPP_IDLE_MODE; \
SPP_FAST_POWER_DOWN(); \
} while (0)ja kutsun
FSM_RESET();
kääntäjä herjaa, että FSM_RESET ei ole functio
Pystytkö käyttämään yksinkertaisempia makroja tai makroja yleensäkään? Sinänsä en näe tuossa mitään vikaa, esim.
#define FSM_RESET() \
do { \
INT_ENABLE (INUM_RF, INT_OFF); \
SPP_DISABLE_TIMEOUT(); \
sppIntData.mode = SPP_IDLE_MODE; \
SPP_FAST_POWER_DOWN(); \
} while (0)
int main(void)
{
FSM_RESET();
return 0;
}Esiprosessoituu gcc:llä kiltisti muotoon:
int main(void)
{
do { INT_ENABLE (INUM_RF, INT_OFF); SPP_DISABLE_TIMEOUT(); sppIntData.mode = SPP_IDLE_MODE; SPP_FAST_POWER_DOWN(); } while (0);
return 0;
}En tosin tätä sdcc:tä juuri tunne.
Kun kokeilin, tuo kyllä toimii SDCC:llä. Oletko varmasti määritellyt tuon makron samassa tiedostossa tai sellaisessa headerissa, joka on jotakin reittiä otettu mukaan soppaan?
$ sdcc --version SDCC : mcs51 2.9.0 #5416 (Dec 25 2009) (UNIX)
$ uname -a FreeBSD crayon 8.0-RELEASE FreeBSD 8.0-RELEASE #1: Tue Dec 22 20:58:42 EET 2009 root@crayon:/usr/obj/usr/src/sys/CRAYON amd64
Käänsin, en asentanut pakettia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.