编译与“索引”相关的错误 - 它实际上是一个函数吗?

时间:2009-06-03 19:23:31

标签: c++ gcc-warning

我正在从编译中删除所有警告,并遇到以下内容:

警告:`的地址    char * index(const char *,int)',将始终为'true'

以下代码行:

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

DEBUG_MSG是我们的一个日志宏,预处理器将其替换为一个采用C ++样式流操作的语句。

索引似乎没有被声明,所以我假设它应该是:

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

和index将是标准库中“char * index(const char *,int)”函数的函数*,但索引函数有什么作用?谷歌似乎没用,因为它提取了与C ++相关的书籍索引。

在我对此警告的解释中是否有一些我缺失的东西?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

据推测,流运营商正在看

<< index

尝试将其自动投射到可以打印的内容中:

<< (bool)index

但是index是一个函数,并且其地址永远不会为NULL。所以这相当于:

<< true

G ++认为这将永远是真的,并发出警告。

关于索引的作用,请参阅http://www.linuxmanpages.com/man3/index.3.php

答案 2 :(得分:0)

index<strings.h>中定义的函数,已被弃用,应由strchr替换。