0

コンパイルからすべての警告を削除し、次のことに遭遇しました。

警告: `char * index(const char *、int)'のアドレスは常に'true'になります

次のコード行の場合:

DEBUG_MSG("Data received from Device "<<(int)_nodeId << "for" << index  <<(int)msgIn.index<<".");

DEBUG_MSGは、プリプロセッサがC++スタイルのストリーム操作を行うステートメントに置き換えるロギングマクロの1つです。

indexは宣言されていないように見えるので、次のようになっていると思います。

DEBUG_MSG("Data received from Device "<<(int)_nodeId << "for index "  <<(int)msgIn.index<<".");

インデックスは、標準ライブラリの「char * index(const char *、int)」関数の関数*になりますが、インデックス関数は何をしますか?Googleは、C ++に関連する本のインデックスを取得するため、役に立たないようです。

この警告の解釈に欠けているものはありますか?

4

3 に答える 3

3

インデックスのマニュアルページは次のとおりです。

http://kernel.org/doc/man-pages/online/pages/man3/index.3.html

于 2009-06-03T19:26:46.057 に答える
1

おそらく、ストリームオペレーターは見ています

<< index

そして、それを印刷可能なものに自動的にキャストしようとしています:

<< (bool)index

ただし、インデックスは関数であり、NULLになることのないアドレスがあります。したがって、これは次と同等です。

<< true

G ++は、これが常に真であることを確認し、警告を発行します。

インデックスの機能については、http://www.linuxmanpages.com/man3/index.3.phpを参照してください。

于 2009-06-03T19:31:20.713 に答える
0

index<strings.h>は非推奨であり、に置き換える必要があると定義された関数strchrです。

于 2009-06-03T19:30:00.730 に答える