0

我正在从我们的编译中删除所有警告,并遇到以下问题:

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

对于以下代码行:

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

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

index 似乎没有被声明,所以我假设它应该是这样的:

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

并且 index 将是标准库中“char* index(const char*, int)”函数的函数*,但是 index 函数有什么作用?谷歌似乎毫无用处,因为它提取了与 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

但是 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 回答