LINUX.ORG.RU

infokey_value принимает char вторым элементом, a «name» - это const char. напиши infokey_value так, что бы второй элемент был const char.

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux

AMX MOD X 1.8.2-dev компилю заюзал ключ -w, отключив предупреждения и всё скомпилилось, правда не рациональное решение.

FailOverFlow
() автор топика
Ответ на: комментарий от FailOverFlow

найди определение INFOKEY_VALUE. это дефайн какой-нибудь скорее всего. надо смотреть что он делает. без этого никак.

как вариант попробуй

INFOKEY_VALUE(infobuffer, "name");
заменить на
char name[] = {"name"};
INFOKEY_VALUE(infobuffer, name);
но это может закончится крешем в рантайме.

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux
char name[] = {"name"};

А static char name[] или const char *name чем не варианты? Оба без выделения массива на стеке. А вообще компилировать без -Werror и забить на предупреждения.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

чем не варианты

тут есть два варианта:

  • infokey_value ничего не меняет во втором аргументе, но объявлен без const, компилятор ругается, что надо без const, а скормили «name» - const. в этом случае можно забить, т.к. это неточность програмера.
  • infokey_value меняет второй аргумент. и возвращает его же или его кусок. тогда проблемы. в случае со статик нельзя быть увереным, что новая строка влезет в память, выделеную под хранения «name». const char *name - это то же самое, что было в первом варианте.
nanoolinux ★★★★
()

На эту хрень можно забить, это паранойа gcc. Сановский и майкрософтовский компилятор на это не ругаются.

DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.