我收到这个警告:
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)
使用没有任何问题const char *symbolP,它的效率也不低于使用效率char *symbolP.此外,指针仍然可分配:
const char * =一个常量的非常量指针 charchar * const =一个指向非常数的常量指针 charconst char * const =一个常量指针 char现在,如果你没有显示的代码实际修改了指向的字符串,那么这是一个错误,你需要先制作一个可修改的副本.这也是使用正确const char *指针的一个很好的理由:您将得到正确的错误.