/
Forside
/
Teknologi
/
Udvikling
/
C/C++
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
C/C++
#
Navn
Point
1
BertelBra..
2425
2
pmbruun
695
3
Master_of..
501
4
jdjespers..
500
5
kyllekylle
500
6
Bech_bb
500
7
scootergr..
300
8
gibson
300
9
molokyle
287
10
strarup
270
embedded funktionspointer
Fra :
Troels Thomsen
Dato :
11-12-03 19:34
Jeg har brug for at hoppe frem og tilbage mellem en applikation og en
bootloader i en atmel mega128
void (*app_funcptr)( void ) = 0x0000; // function pointer to
application
Accepteres af compileren og virker
void (*boot_funcptr)( void ) = 0xf800; // function pointer to
boot-loader
Dette vil compileren (iar ewb 2.28) ikke fordi den ikke kan konvertere fra
unsigned int
til
void(* _near)()
Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?
mvh Troels
Troels Thomsen (
11-12-2003
)
Kommentar
Fra :
Troels Thomsen
Dato :
11-12-03 19:55
>
> void (*boot_funcptr)( void ) = 0xf800;
>
> Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?
>
typedef void (*myType)(void);
myTypeapp_funcptr = 0x0000;
myTypeboot_funcptr = (myType)0xf800;
.... endelig
Byrial Jensen (
11-12-2003
)
Kommentar
Fra :
Byrial Jensen
Dato :
11-12-03 21:18
Troels Thomsen wrote:
> Jeg har brug for at hoppe frem og tilbage mellem en applikation og en
> bootloader i en atmel mega128
>
> void (*app_funcptr)( void ) = 0x0000; // function pointer to
> application
> Accepteres af compileren og virker
Ja, det er en NULL-pointer. Der er ingen garanti for at den
repræsenteres som tallet 0.
> void (*boot_funcptr)( void ) = 0xf800; // function pointer to
> boot-loader
> Dette vil compileren (iar ewb 2.28) ikke fordi den ikke kan konvertere fra
> unsigned int
> til
> void(* _near)()
Det er nødvendigt med et cast.
> Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?
void (*boot_funcptr)(void) = (void (*)(void)) 0xf800;
Funktionspointere bliver tit nemmere at arbejde med hvis man laver en
typedef:
typedef void(*fptr)(void);
fptr boot_funcptr2 = (fptr) 0xf900;
Søg
Alle emner
Teknologi
Udvikling
C/C++
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408921
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.