这段代码给出了错误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
并得到解决。但是不明白为什么会出现错误以及为什么会得到解决。请解释问题。
提前致谢。
最佳答案
两个指针相减时,必须是同一类型。这是因为 C 中的指针运算是基于指针的大小,因此例如,如果您从 int*
中减去 char*
,您将得到一个 1 字节的对象和一个4 字节对象,因此编译器无法知道结果应该以 1 字节为单位还是以 4 字节为单位。
我知道你的两个指针都是单字节的,但它在标准 C 中仍然是不允许的(它没有假设不同类型的对象将存储在同一区域等)。
关于c - 错误 : invalid operands to binary -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38350701/