"override" d'un define

Bonjour,

Je voudrais changer un pin (chip select) défini dans le W5100.h de la librairie ETHERNET, mais sans changer la librairie pour ne pas avoir de problème lors de MàJ.

Est-il possible, dans mon programme principal, ou dans un .h additionnel, de “surcharger” ce #define? (ifdef, undef…??).

La surcharge directe “bestiale” donne une erreur de compilation (double définition).

Merci.

Bonjour,

Il est tout à fait possible de redéfinir un define

#define TOTO 1
#undef TOTO
#define TOTO 2

Par contre dans le cas de ta librairie, il faut que ce soit défini avant l'utilisation par la librairie (compilation du ficher .cpp).
Ce ne me semble pas possible car

  • si le nouveau #define est avant ton fichier .h, il sera redéfini (avec une erreur)
  • si le nouveau #define est après, c'est le précédent qui aura été utilisé dans le .cpp

Donc je pense qu'il n'y a pas de solution sans modifier la librairie.

C'est bien ce que je pensais.
Ce n'est pas bien grave mais ça aurait été plus élégant de trouver une solution!!

Bonne journée.

Bonjour,

Pour que le #define soit aussi pris en compte dans la librrary, il faut que le .cpp associé de la library inclue ton #define.

Au minimum, tu devras toucher le .cpp ou le .h de la library.