我有这些警告,我不知道如何解决它们。
warning: left-hand operand of comma has no effect
warning: right-hand operand of comma has no effect
代码:
size_t cCsvAlias::operator [] (const char* name) const
{
NAME2INDEX_MAP::const_iterator itr(m_Name2Index.find(Lower(name)));
if (itr == m_Name2Index.end())
{
LogToFile(NULL, "cannot find suitable conversion for %s", name);
Assert(false && "cannot find suitable conversion");
return 0;
}
return itr->second;
}
警告来自:
LogToFile(NULL, "cannot find suitable conversion for %s", name);
提前致谢!
编辑:
#define LogToFile (void)(0);
答案 0 :(得分:2)
手动展开宏,就像预处理器会为你做的那样,你得到:
(void) (0);(NULL, "cannot find suitable conversion for %s", name);
右括号中的表达式由逗号运算符分隔的三个语句组成。编译器警告您前两个没有效果。
逗号运算符将多个表达式拼接在一起,按顺序对它们进行评估。右括号中的逗号分隔表达式计算为逗号链中最终表达式的值(在本例中为name
)。然而,前两个表达式(NULL
和"cannot find suitable conversion for "%s"
)实际上并没有做任何事情;这是编译器警告你的内容。
答案 1 :(得分:0)
您可以通过以下方式替换宏来解决警告:
inline void __throw_to_dev_null(const void*, const char*, ... ) {}
#define LogToFile __throw_to_dev_null