Folco (./83) :un long, c'est un signed long.
Le cast en long permet de bosser classiquement sur des entiers non signés
Folco (./83) :un long, c'est un signed long.
Le cast en long permet de bosser classiquement sur des entiers non signés
void *kernel_LibsPtr(LibRef *lib asm("a0"), short function asm("d0")); // kernel.c de PreOS *(long*)((long) Data + *Offset) = kernel_LibsPtr(Descriptor, (short) *Func);
Pen^2 (./94) :
L'addition doit être prioritaire sur le cast.
Pen^2 (./95) :
* sauf, bien sûr, si tu utilises l'octet libre pour stocker des trucs
Folco (./96) :
Hihitu as bien raison sur le principe, mais de toute façon, j'imagine qu'un cast de pointeur en long n'est absolument par portable, par exemple sur 64 bits. Mais t'as raison, c'est sale ^^
Pen^2 (./97) :
kernel_LibsPtr renvoie un void*
Or tu stockes ce void* dans un *(long*), autrement dit, un long. Essaie de caster la valeur de retour de kernel_LibsPtr en long explicitement.
char <= short <= int <= long, enfin, quelque chose de ce genre.
sur x86_64 les long font en effet 64 bits aussi.
Pen^2 (./97) :
Essaie de caster la valeur de retour de kernel_LibsPtr en long explicitement.
*(long*)(((unsigned long)Data) + *Offset) = (long)kernel_LibsPtr(Descriptor, (short) *Func);
Folco (./99) :
Mais je suis étonné, je croyais qu'en C, void* se castait en n'importe quoi automatiquement, tant que c'est un pointeur. Hors là, je le castais en long*.
Link (./105) :
Il me semble bien que sur TI les int font 16 bits, comme les short.
Kevin Kofler (./107) :
Il est plus propre d'utiliser void ** à gauche (à la place de long *).
extern void CommandHelp(char); extern void CommandAbout(char); extern void CommandConfig(char); extern void CommandFlags(char);
const char* str = "abc\0def\0ghi\0jkl\0" et : const char* str1 = "abc" const char* str2 = "def" const char* str3 = "ghi" const char* str4 = "jkl\0"
private const char* const str= "abcdcfghijkl" ; 012345678901 public const char* const s1= str+0 ; public const char* const s2= str+3 ; public const char* const s3= str+6 ; public const char* const s4= str+9 ;
Folco (./111) :
faut juste pas se planter à compter (les chaines sont un peu plus complexes que "abcdef...").
Pen^2 (./113) :
Sinon pour la question d'origine, je me demande si dans une structure l'ordre des champs est garanti ou pas...
ça pourrait résoudre ton problème facilement
du genre :struct { const char* s1= "huhu" ; const char* s2= "hoho" ; char s3= '\0' ; }
J'en sais trop rien en fait