2009-06-03 3 views
0

"index"に関連したコンパイルエラー - 実際には関数ですか?私は、私たちのコンパイルからのすべての警告を除去し、次のように出くわしたんだ

警告: ` のchar *指数(定数のchar *、int型)のアドレスが

『真」、常になります』

は、次のコード行のために:

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

DEBUG_MSGは、C++スタイルのストリーム操作を取る文に私たちのログ用マクロプリプロセッサsubsitutesの一つです。

インデックスが宣言されていないようなので、私はそれを読みになっていたと仮定しています:

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

を、インデックスが「するchar *指数への関数*(定数のchar *、int型になります) "関数は標準ライブラリでは機能しますが、インデックス関数は何をしますか? GoogleはC++に関連する書籍の索引をプルアップするので役に立たないようだ。

この警告の解釈には何かがありますか?

答えて

0

indexが廃止されており、strchrに置き換える必要がある<strings.h>で定義された関数です。

1

おそらく、ストリーム演算子は

<< index 

を見て、自動的に印刷することができるものにそれをキャストしようとしている。

<< (bool)index 

しかし、インデックスは関数であり、その意志アドレスを持っています絶対にNULLにしないでください。したがって、これは次のようになります。

<< true 

G ++はこれが常に真であるとみなし、警告を出します。

は何の指標については、http://www.linuxmanpages.com/man3/index.3.php

関連する問題