Имам следния проблем:
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);
ми дава предупреждението. Подаването на аргумент 2 на „din_send_msg“ отхвърля квалификаторите от целевия тип на указателя.
Знам, че това е така, защото 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
, за да очаквате указател към символ const, това би било най-добре. И трябва да коригира това предупреждение. Същото ще важи и заcin_sendMsg
, ако има същия прототип. - person Gerhardh   schedule 16.09.2020