LINUX.ORG.RU

assignment makes integer from pointer without a cast

 ,


0

1

собираю ядро линукс и вот выдержка из стандартного файла который выдает Варнинги: assignment makes integer from pointer without a cast

я не хард-программер, на мой взгляд приведение типов нормально выполнено. ПОэтому вообще не понимаю - какого черта?

98      s32 argc;
99	s32 *argv;
100	u32 magic;
101	s32 *prom_vec;
102	
103	argc = fw_arg0;
104	*argv = (void *)fw_arg1;
105	magic = fw_arg2;
106	*prom_vec = (void *)fw_arg3;

Сообщения мне приходят следующие:

arch/mips/vvs/prom/init.c:103:8: error: assignment makes integer from pointer without a cast [-Werror=int-conversion]
  *argv = (void *)fw_arg1;
        ^
arch/mips/vvs/prom/init.c:105:12: error: assignment makes integer from pointer without a cast [-Werror=int-conversion]
  *prom_vec = (void *)fw_arg3;
            ^
arch/mips/vvs/prom/init.c:103:8: error: ‘argv’ is used uninitialized in this function [-Werror=uninitialized]
  *argv = (void *)fw_arg1;
        ^
arch/mips/vvs/prom/init.c:105:12: error: ‘prom_vec’ is used uninitialized in this function [-Werror=uninitialized]
  *prom_vec = (void *)fw_arg3;

предполагая, что тип fw_arg1 это s32, судя по стенаниям компайлера
, то в выражении

*argv = (void *)fw_arg1;.

вы присваеваете переменной типа s32 (так как тут разыменование указателя) значение типа void *.

Либо *argv = fw_arg1;.
Либо *argv = *(void *)fw_arg1; :).
Либо argv = (void *)&fw_arg1;.

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