В настоящее время я пытаюсь настроить CMock для модульного тестирования STM32 с использованием MinGW и CMake. В моем конфигурационном файле я установил параметр: weak: чтобы сгенерированный макет давал мне слабые функции. Один пример:
#if defined (__IAR_SYSTEMS_ICC__)
#pragma weak HAL_TIM_IC_Init
#else
HAL_StatusTypeDef __attribute__((weak)) HAL_TIM_IC_Init(TIM_HandleTypeDef* htim);
#endif
HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef* htim)
{
...
}
Однако, когда я компилирую, он дает мне неопределенную ссылку на ошибку HAL_TIM_IC_Init.
Если я удалю атрибуты weak
, это не даст мне неопределенную ошибку ссылки. Но поскольку мне нужно переопределить некоторую функцию, предоставляемую уровнем HAL, мне нужно сделать макетированную библиотеку слабой, иначе это приведет к множественным ошибкам определения.
Итак, мой вопрос: почему слабый атрибут вызвал неопределенную ошибку ссылки и как я могу ее обойти?