赋值从指针目标类型中丢弃限定符

MaM*_*aMu 1 c

我收到这个警告:

warning: assignment discards qualifiers from pointer target type
Run Code Online (Sandbox Code Playgroud)

问题是,事实symbolP并非如此const.我不想const char *symbolP每次都在循环中创建.我怎样才能以更好的方式解决它.这里的片段:

int getList(OCI_Connection* cn)
{
  OCI_Statement* st;
  OCI_Resultset* rs;
  char *symbolP;

  char *query ="SELECT ..";

  st = OCI_StatementCreate(cn);
  OCI_ExecuteStmt(st, query);
  rs = OCI_GetResultset(st);
  while (OCI_FetchNext(rs))
  {
      //here comes the warning:
      symbolP = OCI_GetString(rs,1);
  }
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

Ark*_*kku 5

使用没有任何问题const char *symbolP,它的效率也不低于使用效率char *symbolP.此外,指针仍然可分配:

  • const char * =一个常量的非常量指针 char
  • char * const =一个指向非常数的常量指针 char
  • const char * const =一个常量指针 char

现在,如果你没有显示的代码实际修改了指向的字符串,那么这是一个错误,你需要先制作一个可修改的副本.这也是使用正确const char *指针的一个很好的理由:您将得到正确的错误.