我从下面的函数中得到一个编译器“警告:从指针目标类型返回丢弃限定符”。C:编译器警告“从指针目标类型返回丢弃限定符”
unsigned char* getBeginning(const unsigned char * Packet)
{
return Packet+3;
}
我研究这对SO等地,而且似乎编译器抱怨,虽然我参加一个const指针,我返回非const指针。
我试图做到的是:
1)我希望让用户知道,我不会改变自己的任何数据的这一功能,因此常量。
2)但是,后来的函数将使用返回的指针进行更改,所以我不想让我的返回类型为const。
有没有更好的方法来做到这一点,我没有得到警告?我仍然在学习C.
是否确实需要删除'const'?这听起来像个坏主意...... – sircodesalot
@sircodesalot:这是这种情况下常见的C语言习惯(替代方法是编写两个函数(一个用于'const',一个用于非'const'),或者写入两个函数只有一个非'const'版本,并让调用者将'const'扔掉)。 'strchr'。 – mafso
谢谢你的回答!在阅读完回复后,我可能会完全错误。我打算让用户通过一个unsigned char *。它不一定是一个const unsigned char *。我想我可以在函数定义中使用“const”来表明我不会修改指向IN THIS PARTICULAR函数的数据。所以,换句话说,我并不期望用户向我传递一个const unsigned char *,我只是想向他们展示我不会在这里触及unsigned char *。稍后,返回的指针会修改数据。有一个更好的方法吗? – user1762250