Я получаю предупреждение о несовместимом типе возврата - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующий код:

static void dmaCallbackHandler(tSOME_ENUM channel)
{
    switch(channel)
    {
        case blabla:
              //do some stuff

    }
    func();
}

, а затем несколько строк ниже. У меня есть функция, которая возвращает адрес функции выше, и я вызываю эту функцию (_test_getDmaCallbackHandler) из другой. c file:

uint32* _test_getDmaCallbackHandler(void)
{
    return &dmaCallbackHandler;
}

И я получаю предупреждение, которое говорит следующее:

warning: returning 'void (*)(tSOME_ENUM)' {aka 'void (*)(enum <anonymous>)'}
         from a function with incompatible return type 'uint32 *' 
         {aka 'unsigned int *'}
         [-Wincompatible-pointer-types]

472 |     return &dmaCallbackHandler;

Как мне избавиться от этого предупреждения?

1 Ответ

2 голосов
/ 23 апреля 2020

То, что говорит компилятор: вы указали тип возвращаемого значения как uint32_t*, а затем передали ему совершенно несвязанный тип в виде указателя на функцию, который не является ни в малейшей степени совместимым.

Таким образом, кажется, что Ваш код должен быть изменен на это:

typedef void dma_callback_t (tSOME_ENUM channel);
...

dma_callback_t* _test_getDmaCallbackHandler(void)
{
    return dmaCallbackHandler;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...