在编译时,我得到“错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线

Posted

技术标签:

【中文标题】在编译时,我得到“错误:不同指针类型 \'char*\' 和 \'char (*)[200]\' 之间的比较缺少强制转换”在线【英文标题】:On compile I get "error: comparison between distinct pointer types 'char*' and 'char (*)[200]' lacks a cast" on line在编译时,我得到“错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线 【发布时间】:2016-03-31 16:12:24 【问题描述】:

相关代码是

void setup ()

int respCode;
char * pResp;
const char http[] = "HTTP/1.1";
char response[] = "HTTP/1.1 200 OK";
    if (strstr(response,http) == &response)  
        pResp = strchr(response," ") + 1;
        respCode = atoi(pResp);
    

我试图首先确定 char 数组是否以“HTTP/1.1”开头,如果是,则将下一个以空格分隔的标记(应该表示整数)放入整数变量“respCode”中。

我收到以下错误:

错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线

我已经搜索了答案,但没有找到针对此特定错误的答案,更不用说详细解释为什么它是错误了。

【问题讨论】:

你想达到什么目的? & 不需要 最近有没有人告诉你“在 C++ 中,数组是指针”?如果是这样,请不要相信他——也许这会有所帮助。 你能发一个MCVE吗?这里没有足够的代码来评估。 这是一个糟糕的错误信息。这意味着解决问题的方法是添加强制转换而不是比较正确类型的值。 @TriskalJM 这是一个 MCVE :P 【参考方案1】:

我想你想检查http 是否出现在response 的开头。strstr (char *str1, char *str2) 返回一个指针,指向str1str2 的第一次出现,所以你应该把它和response比较,而不是&response

将条件语句更改为if (strstr(response,http) == response)。 查看工作示例here。

【讨论】:

我编辑了问题以包含一个包含问题的示例程序。诚然,有几个编译错误,如果不是全部,大多数是处理 char 数组、它们的指针和 char 数组函数。很明显,尽管我已经阅读并尝试了几种方法,但我还是不明白这些。

以上是关于在编译时,我得到“错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyInstaller 编译得到 pyodbc 后如何在启动时修复错误?

编译后无法覆盖“用户”模型。解决后我得到“用户”未定义

为啥编译内核时不能得到相同的符号?

编译我的应用程序时,我得到模块构建失败:SyntaxError:意外令牌

我正在尝试计算 char 数组中的内容直到空终止,但是每次编译时我都会得到一个大于数组的数字

Android make 期间编译 libusbx 失败