Предупреждение верно.Более новые версии gcc содержат более полезное сообщение:
предупреждение: присваивание 'char' из 'char *' делает целое число из указателя без приведения [-Wint-преобразование]
13 | (*(char*)q.string) = str2;
| ^
Вы разыменовываете char *
, что дает вам char
.Этому типу char
вы присваиваете str2
типа char *
.
Как показал Сурав Гхош , вы можете просто сделать это:
q.string = str2;
Если вы действительно хотите сделать приведение явным:
q.string = (void*)str2;
Как видите, вы выполняли приведение не с той стороны.