Hello,

Je cherche à comprendre ce que fait la macro suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
#define SBA(sb, v) (*(unsigned int*)((char*)(sb)+(v)))
Un code d'appel :
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));
et les traces d'execution :
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