传递 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);