Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4644 connectés 

  FORUM HardWare.fr
  Programmation
  C

  #define

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

#define

n°1300949
nalvon
Posté le 08-02-2006 à 05:39:26  profilanswer
 

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.

mood
Publicité
Posté le 08-02-2006 à 05:39:26  profilanswer
 

n°1301005
tayl
tout est dans tout et ...
Posté le 08-02-2006 à 10:09:20  profilanswer
 

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

n°1301048
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-02-2006 à 10:45:35  profilanswer
 

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/
n°1301511
nalvon
Posté le 08-02-2006 à 18:33:08  profilanswer
 

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 .


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  #define

 

Sujets relatifs
[VisualC++] Define pour distinguer VC7 de VC6 ?[.net][C#] faire un define avec une valeur comme en C ?
Question sur les defineDEFINE ensembles
2 questions: define() et omettre un paramètre sur une fonction perso[javascript] Tester qu'une fonction est défine
[C#] Equivalent define en C#?GCC define architecture
Probleme avec define : comment recuperer la chaine de la constante ?Pas de refresh sur un define dans un include ?
Plus de sujets relatifs à : #define


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)