Я работаю в библиотеке, которая является интерфейсом к другим библиотекам с несколькими определенными макросами, такими как:
#define GPIOx some stuff
#define __HAL_RCC_GPIOx_CLK_ENABLE() some other stuff
, где x - это буква (A, B, C, ...) .
Я не могу изменить эти макросы (или я не должен изменять их, потому что они используются другими компонентами).
В библиотеке, в которой я работаю, я пытаюсь определить некоторые другие макросы, которые пользователь может изменять, например:
#define DHT_GPIO_Port GPIOx
И я хочу определить макрос, который использует такое определение для генерации другого имени макроса:
#define __HAL_DHT_CLK_ENABLE(DHT_GPIO_Port) __HAL_RCC_## DHT_GPIO_Port ##_CLK_ENABLE()
Это потому, что я хочу использовать макрос для моей библиотеки вместо __HAL_RCC_GPIOx_CLK_ENABLE (), поскольку он будет отличаться в зависимости от того, какой GPIO определен пользователем.
Однако, когда я пытаюсь использовать мой макрос __HAL_DHT_CLK_ENABLE (DHT_GPIO_Port), он расширяется до __HAL_RCC_DHT_GPIO_Port_CLK_ENABLE (), а не __HAL_RCC_GPIOx_CLK_ENABLE ().
С другой стороны, я пытался поместить его в другой макрос, однако он расширяет и GPIOx, который мне не нужен.
Возможно, это вопрос новичка, но не могли бы вы помогите раскрыть только первый уровень макроса DHT_GPIO_Port в конкатенации другого макроса?