Bonjour,
je viens de tester, avec une macro variadic
1 2
| #define INITCHAMP(champ, size, ...) \
{ char tmp[size+1] = {__VA_ARGS__}; memcpy(champ, tmp, size); } |
qui permet l'écriture
INITCHAMP(pData->data2, 9, 0xa0, 0, 0, 0, 0x42, 0x10, 0x10, 0x10, 0x10)
Ca fonctionne.
Les accolades dans la macro permettent d'éviter les erreurs de redefined tmp.
J'aurais préféré une écriture comme
INITCHAMP(pData->data2, 9, {0xa0, 0, 0, 0, 0x42, 0x10, 0x10, 0x10, 0x10}, 9)
avec la macro
1 2
| #define INITCHAMP(champ, contenu, size) \
{ char tmp[size+1] = contenu; memcpy(champ, tmp, size); } |
Mais j'ai un warning C4002 :/
Partager