错误:二进制文件的操作数无效 -

时间:2016-07-13 11:39:19

标签: c

这段代码提供错误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并解决了问题。但是没有解释为什么错误会发生以及为什么它会得到解决。请解释一下这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:3)

当减去两个指针时,它们必须是相同的类型。这是因为C中的指针算法基于指针的大小,因此例如,如果从char*中减去int*,则会有一个1字节的对象和一个4字节的对象,所以编译器无法知道结果是以1字节为单位还是以4字节为单位。

我意识到你的两个字节都是单个字节,但它仍然不允许在标准C中(不假设不同类型的对象将存储在同一区域等)。