我正在从编译中删除所有警告,并遇到以下内容:
警告:`的地址 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 ++相关的书籍索引。
在我对此警告的解释中是否有一些我缺失的东西?
答案 0 :(得分:3)
答案 1 :(得分:1)
据推测,流运营商正在看
<< index
尝试将其自动投射到可以打印的内容中:
<< (bool)index
但是index是一个函数,并且其地址永远不会为NULL。所以这相当于:
<< true
G ++认为这将永远是真的,并发出警告。
答案 2 :(得分:0)
index
是<strings.h>
中定义的函数,已被弃用,应由strchr
替换。