#define

#define - C - Programmation

Marsh Posté le 08-02-2006 à 05:39:26    

salut,
 
en cherchant des informations sur le FAT12(File Allocation Table), j´ai trouvé un code dont je ne  
 
comprends pas la ligne suivante:
 
#define READ2(x)                    (c2=*(uint16_t*)memcpy(&c2,x,sizeof(x)),c2)
 
 
Mon Probleme est de savoir le resultat de l´evaluation de cette expression .
 
Une aide serait la bienvenue.
 
Merci.

Reply

Marsh Posté le 08-02-2006 à 05:39:26   

Reply

Marsh Posté le 08-02-2006 à 10:09:20    

cé a dir  
que ta déclaré une constante qui à la valeur évaluer entre parentése
 
mais cé pas trés claire ;)

Reply

Marsh Posté le 08-02-2006 à 10:45:35    

nalvon a écrit :

en cherchant des informations sur le FAT12(File Allocation Table), j´ai trouvé un code dont je ne comprends pas la ligne suivante:

#define READ2(x)                    (c2=*(uint16_t*)memcpy(&c2,x,sizeof(x)),c2)




Définit une macro nommée READ2 avec un parametre x qui doit être un tableau de char.
 
effectue :  
 
- memcpy (&c2, x, sizeof(x)) : copie de x dans c2. Qu'est-ce que c2 ? Probablement une variable de type uint16_t [C99] ?  
 
- c2 = *(uint16_t*)  : memcpy retourne l'adresse de c2. Le contenu de cette adresse est lu (en 16 bits) et le résultat est stocké dans c2.  
 
Grace à l'opérateur ',' (comma operator), la valeur de c2 est retournée.
 
C'est assez tordu comme macro...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 08-02-2006 à 19:09:31

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 08-02-2006 à 18:33:08    

Emmanuel Delahaye a écrit :

Définit une macro nommée READ2 avec un parametre x qui doit être un tableau de char.
 
effectue :  
 
- memcpy (&c2, x, sizeof(x)) : copie de x dans c2. Qu'est-ce que c2 ? Probablemnt une variable de type uint16_t [C99] ?  
 
- c2 = *(uint16_t*)  : memcpy retourne l'adresse de c2. Le contenu de cette adresse est lu (en 16 bits) et le résultat est stocké dans c2.  
 
Grace à l'opérateur ',' (comma operator), la valeur de c2 est retournée.
 
C'est assez tordu comme macro...


 
 
Merci Emmanuel .

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed