Hello,
Je cherche à comprendre ce que fait la macro suivante :
Un code d'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define SBA(sb, v) (*(unsigned int*)((char*)(sb)+(v)))
et les traces d'execution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int i, tab[5]; for(i=0; i<5; i++) tab[i] = 2; for(i=0; i<5; i++) printf("%d = %ld\n", i, tab[i]); printf("=> %ld\n", SBA(tab, 1 & 0xffff)); printf("=> %ld\n", SBA(tab, 3 & 0xffff));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 0 = 2 1 = 2 2 = 2 3 = 2 4 = 2 => 33554432 => 512
Moi pas comprendre du tout mais alors pas du tout :-]
Si qqn avait la gentillesse de me l'expliquer et/ou de produire un pseudo-code C ça serait super.
NB : les codes "1 & 0xffff" et "3 & 0xffff" peuvent se réduire simplement à "1" et "3". Normalement d'est une variable à la place de 1 et 3 mais ça change pas le problème =)
Merci
Partager