传递 arg 2 of --- 丢弃来自指针目标类型的限定符
passing arg 2 of --- discards qualifiers from pointer target type
我遇到了以下问题:
void send_Msg(const char* msg)
{
#if channel_free
(void) din_send_msg(channel, msg); // (void) rcd_send_msg(int channel, char* msg);
#else
(void) cin_sendMsg(channel, msg);
#endif
(void) din_send_msg(channel, msg);
给我警告“传递 'din_send_msg' 的 arg 2 会丢弃来自指针目标类型的限定符”。
我知道这是因为 din_send_msg
接受一个 int 和一个 char*
作为参数,它使我的 const char*
变成了 char*
。将 (void) din_send_msg(int channel, char* msg);
更改为 (void) din_send_msg(int channel, const char* msg);
并将 const char*
分配给本地指针没有做任何事情。但是很有可能我只是做错了。
我该如何处理这个警告?
(是的,我绝对必须摆脱它,即使它只是一个警告)
你需要做的是,如果din_send_msg
这个函数是你的,并且确定它没有修改指针所指向的字符,那就是把函数的原型处处、处处改成使用
returntype din_send_msg(int channel, const char *msg);
我不知道函数的实际 return 类型是什么。
如果你不能这样做,那么你通常可以使用 cast 来消除警告:
din_send_msg(channel, (char *)msg);
我遇到了以下问题:
void send_Msg(const char* msg)
{
#if channel_free
(void) din_send_msg(channel, msg); // (void) rcd_send_msg(int channel, char* msg);
#else
(void) cin_sendMsg(channel, msg);
#endif
(void) din_send_msg(channel, msg);
给我警告“传递 'din_send_msg' 的 arg 2 会丢弃来自指针目标类型的限定符”。
我知道这是因为 din_send_msg
接受一个 int 和一个 char*
作为参数,它使我的 const char*
变成了 char*
。将 (void) din_send_msg(int channel, char* msg);
更改为 (void) din_send_msg(int channel, const char* msg);
并将 const char*
分配给本地指针没有做任何事情。但是很有可能我只是做错了。
我该如何处理这个警告?
(是的,我绝对必须摆脱它,即使它只是一个警告)
你需要做的是,如果din_send_msg
这个函数是你的,并且确定它没有修改指针所指向的字符,那就是把函数的原型处处、处处改成使用
returntype din_send_msg(int channel, const char *msg);
我不知道函数的实际 return 类型是什么。
如果你不能这样做,那么你通常可以使用 cast 来消除警告:
din_send_msg(channel, (char *)msg);