在编译时,我得到“错误:不同指针类型 '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)
返回一个指针,指向str1
中str2
的第一次出现,所以你应该把它和response
比较,而不是&response
。
将条件语句更改为if (strstr(response,http) == response)
。
查看工作示例here。
【讨论】:
我编辑了问题以包含一个包含问题的示例程序。诚然,有几个编译错误,如果不是全部,大多数是处理 char 数组、它们的指针和 char 数组函数。很明显,尽管我已经阅读并尝试了几种方法,但我还是不明白这些。以上是关于在编译时,我得到“错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线的主要内容,如果未能解决你的问题,请参考以下文章
使用 PyInstaller 编译得到 pyodbc 后如何在启动时修复错误?
编译我的应用程序时,我得到模块构建失败:SyntaxError:意外令牌