Pregunta ¿Cómo podría (temporalmente) deshacerme de algo?


Estoy usando una biblioteca de terceros que typedefs byte a char.

(Esto es malo como char podría ser signed o unsigned dependiendo de la elección del compilador).

Desafortunadamente eso typedef se ha extendido a la base de código que mantengo y estoy dispuesto a eliminarlos: usando uint8_t directamente en su lugar.

¿Hay alguna manera de que pueda de alguna manera deshacer esta typedef una vez que llego a mi código (es decir, directamente después #include <3rdpartylib>)?

Estaré en posición de eliminar la "solución" de mi base de código una vez que haya eliminado todo el bytes.


9
2017-09-16 11:44


origen


Respuestas:


La forma más fácil es poner entre paréntesis los elementos de la biblioteca de terceros de esta forma:

#define byte somethingnotnamedbyte
#include <3rdpartylib>
#undef byte

Eso evita la necesidad de editar <3rdpartylib>, y evita contaminar tu código con macros o ese typedef malo.

Condición previa: El token de preprocesamiento byte solo se usa como ese nombredef-nombre en <3rdpartylib>nunca más.


14
2017-09-16 11:56



No es posible hacer esto. Undef solo funciona en macros.


1
2017-09-16 11:50