这段代码给出了错误:
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);
}
我把
error: invalid operands to binary -
改成UINT8 *yes_no
,结果就解决了。但不明白为什么会出现错误为什么会解决。请解释一下这个问题。提前谢谢。
最佳答案
当减去两个指针时,它们必须是同一类型的。这是因为C语言中的指针算法是基于指针对象的大小的,例如,如果从char*
中减去int*
,则有一个1字节对象和一个4字节对象,因此编译器无法知道结果是1字节单位还是4字节单位。
我知道您的两个指针对象都是单字节的,但在标准C中仍然是不允许的(这不假设不同类型的对象将存储在同一个区域中,等等)。