2016-09-03 6 views
0

私は埋め込みCをコードすることを学んでいます。以下のようなコードがあります。関数本体でvoidへのキャスト変数の使用法は何ですか?

機能は次のように定義されています。

void printDebug(const char d1[]){(void)d1;} 

そして、このように使用されています。私はその目的を理解していない

printDebug("BLE_UART_EVENT"); 

。それは私に呼び出し可能なchar配列の印象を与えますか?

+0

"char array is callable"とはどういう意味ですか?このコードのどの部分をchar配列と呼んでいると思いますか?あなたが不思議に思うような場合、 'printDebug'はノーオペレーションです。運動のポイントが何であるかははっきりしていません。 –

+0

@IgorTandetnik正直言って、 '(void)d1;'の部分です。しかし、実際に私はそれがどのように機能するのかよく分かりません。 – smwikipedia

+0

これは単なるキャスト型です – redneb

答えて

5

char配列を呼び出すのではなく、char配列を明示的にvoidに変換するだけです。 (評価結果はすぐに破棄されます)。

私は、未使用の変数のコンパイラ警告を禁止するために使用されていると思います。

パラメータをまったく使用しない場合、パラメータを名前のないパラメータにすることが明確になります。

void printDebug(const char[]) {} 
+2

私は 'printDebug'関数がまだ完全には実装されていない可能性があると思います。したがって、未使用のパラメータの警告を抑制する必要があります。 – smwikipedia

+0

@smwikipedia私は実際にどこかでそれを印刷するデバッグビルドのための別の実装があると思います。しかし、リリースビルドでは、デバッグ情報を表示するのは無意味です。 – KIIV

+3

@smwikipedia多分。しかし、それはまだ悪い考えです。それが使用されていない場合、それはunamedする必要があります。 – songyuanyao

関連する問題