这段代码提供错误error: invalid operands to binary -
:
if(memcmp(params , DEV_SERVICE_DISCOVERY , strlen(DEV_SERVICE_DISCOVERY)) == 0)
{
UINT8 *yes_no;
params = XSH_UtilFindNextToken(params);
yes_no = XSH_UtilFindNextToken(params);
params[yes_no - params - 1] = '\0';
rc = AppTest_ServiceDiscovery(params, yes_no , strlen(yes_no), pOut);
}
我将UINT8 *yes_no
更改为char *yes_no
并解决了问题。但是没有解释为什么错误会发生以及为什么它会得到解决。请解释一下这个问题。
提前致谢。
答案 0 :(得分:3)
当减去两个指针时,它们必须是相同的类型。这是因为C中的指针算法基于指针的大小,因此例如,如果从char*
中减去int*
,则会有一个1字节的对象和一个4字节的对象,所以编译器无法知道结果是以1字节为单位还是以4字节为单位。
我意识到你的两个字节都是单个字节,但它仍然不允许在标准C中(不假设不同类型的对象将存储在同一区域等)。