Рассмотрим заголовок lib.h
для чтения (только для чтения)
#define XYZ 42
В исходном файле я хочу использовать слово XYZ
для несвязанной цели и не хочу, чтобы подстановка была с 42
. Но в том же исходном файле для других целей я также хочу получить доступ к значению 42
из lib.h
без его жесткого кодирования. Как переименовать макрос из XYZ
, скажем, LIB_XYZ
?
Следующее не работает, поскольку препроцессор хочет XYZ
во время подстановки LIB_XYZ
, но XYZ
был undefined:
#include "lib.h"
#define LIB_XYZ XYZ
#undef XYZ
Есть ли способ обмануть препроцессор в расширение LIB_XYZ
до его окончательного значения до того, как XYZ
будет потерян?