comprendre ce code en C
Publié : ven. 08/sept./2006 14:57
Je me suis écrit un petit bout de code pour extraire des fichier h (de MS) les enumérations (c'est pour commencer, et puis c'est du code bourrin car c'est juste pour m'aider). Loin de moi l'idée de transcrire du C en Pure, je n'y connait pratiquement rien en C, je regarde le code et j'essaye de comprendre et puis li y a des sites d'explications en français.
Mon code marche pas trop mal, testé sur tous les fichiers h de gdi+ et le résultat est correct mais j'ai un problème de comphrésension
Les énumération en C commencent par le mot clef enum suivi du nom de l'énumération puis le symbole { déclenche le début de l'énumération et le symbole } termine l'énumération
voici le code C qui me pose problème, extrait du fichier GdiplusEnums.h
Mon problème vient du fait que l'on a deux fois la ligne
enum EmfPlusRecordType
la 1ere fois suivi de définitions que je trouve jolies mais auxquelles je ne comprend strictement rien et la 2eme fois c'est l'énumération que je comprend
il y a quelqu'un à bord pour m'expliquer sans me renvoyer sur un forum C
Merci
Mon code marche pas trop mal, testé sur tous les fichiers h de gdi+ et le résultat est correct mais j'ai un problème de comphrésension
Les énumération en C commencent par le mot clef enum suivi du nom de l'énumération puis le symbole { déclenche le début de l'énumération et le symbole } termine l'énumération
voici le code C qui me pose problème, extrait du fichier GdiplusEnums.h
Code : Tout sélectionner
//---------------------------------------------------------------------------
// EMF+ Records
//---------------------------------------------------------------------------
// We have to change the WMF record numbers so that they don't conflict with
// the EMF and EMF+ record numbers.
enum EmfPlusRecordType;
#define GDIP_EMFPLUS_RECORD_BASE 0x00004000
#define GDIP_WMF_RECORD_BASE 0x00010000
#define GDIP_WMF_RECORD_TO_EMFPLUS(n) ((EmfPlusRecordType)((n) | GDIP_WMF_RECORD_BASE))
#define GDIP_EMFPLUS_RECORD_TO_WMF(n) ((n) & (~GDIP_WMF_RECORD_BASE))
#define GDIP_IS_WMF_RECORDTYPE(n) (((n) & GDIP_WMF_RECORD_BASE) != 0)
enum EmfPlusRecordType
{
// Since we have to enumerate GDI records right along with GDI+ records,
// We list all the GDI records here so that they can be part of the
// same enumeration type which is used in the enumeration callback.
WmfRecordTypeSetBkColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
WmfRecordTypeSetBkMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
WmfRecordTypeSetMapMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
WmfRecordTypeSetROP2 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
WmfRecordTypeSetRelAbs = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),enum EmfPlusRecordType
la 1ere fois suivi de définitions que je trouve jolies mais auxquelles je ne comprend strictement rien et la 2eme fois c'est l'énumération que je comprend
il y a quelqu'un à bord pour m'expliquer sans me renvoyer sur un forum C
Merci