2009-06-03 3 views
0

ich alle Warnungen aus unserer Kompilierung zu entfernen, und kam über die folgenden:Kompilierfehler bezogen auf "index" - ist das eigentlich eine Funktion?

Warnung: die Adresse des ` char * Index (const char *, int) true '‘, wird es immer sein'

für die folgende Codezeile:

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

DEBUG_MSG ist eine unserer Protokollierungs Makros, die die Prä-Prozessor subsitutes in einer Erklärung, dass C++ Stil Stream-Operationen nimmt.

Index erscheint nicht deklariert werden, so gehe ich davon aus, dass es angeblich zu lesen:

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

und Index wäre eine Funktion * auf die „char * Index (const char * sein, int) "Funktion in der Standardbibliothek, aber was macht die Indexfunktion? Google scheint unbrauchbar zu sein, da es Indizes von Büchern in Bezug auf C++ hochzieht.

Gibt es etwas, das ich in meiner Interpretation dieser Warnung vermisse?

Antwort

0

index eine Funktion in <strings.h> definiert ist, die veraltet und sollten durch strchr ersetzt werden.

1

Vermutlich wird der Strom-Betreiber

sieht
<< index 

Und versuchen, automatisch zu etwas zu werfen, die gedruckt werden können:

<< (bool)index 

Aber Index ist eine Funktion, und hat eine Adresse, die wird niemals NULL sein. Das ist also äquivalent zu:

<< true 

G ++ sieht, dass dies immer der Fall sein wird, und gibt eine Warnung aus.

Wie aus welchem ​​Index nicht finden http://www.linuxmanpages.com/man3/index.3.php

Verwandte Themen