当strlen用于unsigned char数组和signed char数组时发出警告

时间:2016-10-04 16:09:13

标签: c++ c string function compiler-warnings

我不明白为什么最后两行会使用strlen()导致警告。编译器是否应该忽略这些?

    foreach (string key in Request.Cookies.AllKeys)
    {
       HttpCookie c = Request.Cookies[key];
       c.Expires = DateTime.Now.AddMonths(-1);
       Response.AppendCookie(c);
    }

1 个答案:

答案 0 :(得分:2)

因为原型是:

  

size_t strlen(const char * str);

ref所述。

这些行中发生了隐式转换,因此出现了警告。在此处阅读更多内容:How can I avoid gcc warning for plain "char" to : "unsigned char" OR "signed char" conversion?

正如Pete Becker所说:

" charunsigned char涉及隐式转化。 unsigned char*char*,与问题中的代码一样,无效,需要诊断。 "