2017-01-08 13 views
2

В отслеживании исходного кода task.c для freeRTOS я вижу функцию с именем portTASK_FUNCTION. его код, как показано нижеконтекст функции portTASK_FUNCTION в sourecode freeRTOS (void) pvParameters

static portTASK_FUNCTION(prvIdleTask, pvParameters) 
{ 
    /* Stop warnings. */ 
    (void) pvParameters; //<--what for?? 

    for(;;) 
    { 
     do something 
    } 
} 

я не понимаю, что (пустоты) pvParameters средства, надеюсь, кто-то может мне помочь, ТНХ

Кстати, тип этой функции в аргументах не объявлены, почему он может работать?

ответ

2

Этот код состоит из комментария:

/* Stop warnings. */ 

оптимизатор удалит код, который вы упомянули. Но в функции есть неиспользованный параметр - pvParameters. И этот код написан, чтобы заткнуть компилятор. Он ничего не делает.

+0

Почему неиспользованный параметр помещается в этот макрос? зачем? –

1

portTASK_FUNCTION is НЕ Функция, ее макрос. Если я google это первая ссылка, которую я получаю здесь: http://www.freertos.org/implementing-a-FreeRTOS-task.html - в этом случае функция prvIdleTask является функцией. Во всем, кроме одного неясного случая, упомянутого в ссылке, макрос portTASK_FUNCTION устарел (не требуется), но используется в основном коде ядра для переносимости.

+0

thx, я понял. это просто макрос, и я нашел определение в другом месте –