2009-06-03 8 views
0

Je supprimer tous les avertissements de notre compilation, et suis tombé sur les éléments suivants:Erreur de compilation liée à "index" - est-ce réellement une fonction?

avertissement: l'adresse de ` index char * (const char *, int) », sera toujours 'vrai'

pour la ligne de code suivante:

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

DEBUG_MSG est l'un de nos macros d'exploitation que les subsitutes préprocesseur dans une déclaration qui prend les opérations de flux de style C++.

index

ne semble pas être déclarée, donc je suppose qu'il était censé lire:

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

et l'indice serait fonction * à l'index « char * (const char *, int) "dans la bibliothèque standard, mais que fait la fonction d'index? Google semble inutile car il tire vers le haut des index de livres liés au C++.

Y a-t-il quelque chose qui me manque dans mon interprétation de cet avertissement?

Répondre

0

index est une fonction définie dans <strings.h> qui est dépréciée et devrait être remplacé par strchr.

1

On peut supposer que les opérateurs de flux voient

<< index 

Et en essayant de jeter automatiquement en quelque chose qui peut être imprimé:

<< (bool)index 

Mais l'indice est une fonction, et a une adresse qui ne jamais être nul. Donc, cela équivaut à:

<< true 

G ++ voit que cela sera toujours vrai et émet un avertissement.

Quant à ce que l'indice ne, voir http://www.linuxmanpages.com/man3/index.3.php

Questions connexes