2017-01-08 39 views
2

freeRTOSのtask.cのソースコードをトレースすると、という名前の関数があります.TASK_FUNCTIONです。 freeRTOS(空)のsourecodeの関数portTASK_FUNCTIONのコンテキストpvParameters

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

    for(;;) 
    { 
     do something 
    } 
} 

の下に私は理解していないように、そのコードが何であるか (無効)pvParameters、誰かが私を助けることができる願ってい手段、THX

ところで、引数のこの関数の型が宣言されていない

、なぜそれは働くことができますか?

答えて

2

このコードは、コメントで構成されています

/* Stop warnings. */ 

オプティマイザはあなたが言及したコードを削除します。しかし、関数には未使用のパラメータがあります - pvParameters。そして、このコードはコンパイラをシャットダウンするために書かれています。それは何もしません。

+0

なぜこのマクロに未使用のパラメータが入りますか?何のために? –

1

portTASK_FUNCTIONは、ではなく、関数、そのマクロです。私がグーグルであれば、最初のリンクはここにあります:http://www.freertos.org/implementing-a-FreeRTOS-task.html - この場合、prvIdleTaskは関数です。リンク上で言及されている1つの不明瞭なケースを除いて、portTASK_FUNCTIONマクロは廃止されました(必須ではありません)が、移植性のためにメインカーネルコードで使用されています。

+0

thx、私はそれを得た。それはちょうどマクロであり、私は他の場所で定義を見つけました –

関連する問題