PDA

Просмотр полной версии : [Вопрос] Варнинги в Pawn Compiler 3.10.9



geneff
01.10.2018, 20:29
Добрый вечер. Поставил я значит новый компилятор 3.10.9, начал компилировать мод и мне выдало что-то 1600+ варнингов на данную функцию:

stock ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);

SetPVarInt(playerid, "USEDIALOGID", dialogid);

UseDialog{playerid} = true;

return 1;
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialo
#endif
#define ShowPlayerDialog ShowPlayerDialogEx

Пробовал уже делать и так:

stock ShowPlayerDialogEx(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[])
{
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);

SetPVarInt(playerid, "USEDIALOGID", dialogid);

UseDialog{playerid} = true;

return 1;
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialo
#endif
#define ShowPlayerDialog ShowPlayerDialogEx

Всеравно не помогает. Так вот вопрос, что нужно сделать то, чтоб избавится от этих варнингов? О_о

Kovshevoy
01.10.2018, 21:20
Добрый вечер. Поставил я значит новый компилятор 3.10.9, начал компилировать мод и мне выдало что-то 1600+ варнингов на данную функцию:

stock ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);

SetPVarInt(playerid, "USEDIALOGID", dialogid);

UseDialog{playerid} = true;

return 1;
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialo
#endif
#define ShowPlayerDialog ShowPlayerDialogEx

Пробовал уже делать и так:

stock ShowPlayerDialogEx(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[])
{
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);

SetPVarInt(playerid, "USEDIALOGID", dialogid);

UseDialog{playerid} = true;

return 1;
}
#if defined _ALS_ShowPlayerDialog
#undef ShowPlayerDialog
#else
#define _ALS_ShowPlayerDialo
#endif
#define ShowPlayerDialog ShowPlayerDialogEx

Всеравно не помогает. Так вот вопрос, что нужно сделать то, чтоб избавится от этих варнингов? О_о

Если лень их исправлять, добавь это в начало мода и всё.
#pragma warning disable 214
#pragma warning disable 239

- - - Добавлено - - -

А вообще, не понимаю, зачем тебе перехваты?
Обычный #define уже спасает ситуацию.

geneff
01.10.2018, 22:30
Крч :i-m_so_happy:, не знаю правильно это или нет, но я психанул и зашел в инклуд a_samp и просто исправил нативку:

native ShowPlayerDialog(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[]);
и сделал:

stock ShowPlayerDialogEx(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[])
{
/* код */
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}

Kovshevoy
01.10.2018, 23:26
Крч :i-m_so_happy:, не знаю правильно это или нет, но я психанул и зашел в инклуд a_samp и просто исправил нативку:

native ShowPlayerDialog(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[]);
и сделал:

stock ShowPlayerDialogEx(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[])
{
/* код */
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}

Написано же, что нативки и паблики отключены для этих варнингов. Ну, ладно.

geneff
02.10.2018, 18:35
Написано же, что нативки и паблики отключены для этих варнингов. Ну, ладно.

Тогда почему идут варнинги на данный код?

stock ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
/* код */
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}

а если так, то кидает ошибку 35: несоответствие типов аргумента

stock ShowPlayerDialogEx(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[])
{
/* код */
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}

Elrmrnt-Kritik
02.10.2018, 22:44
Потому что нативная функция объявлена так:
native ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);

А должна быть так, как у вас после исправлений:
native ShowPlayerDialog(playerid, dialogid, style, const caption[], const info[], const button1[], const button2[]);

Правда не рекомендуется вносить свои поправки в стандартные inc, потому я бы просто объявил вашу функцию ShowPlayerDialogEx без атрибута const.

Daniel_Cortez
03.10.2018, 13:42
Используйте fixes.inc (http://pro-pawn.ru/showthread.php?14040), там уже давно есть фикс для const-корректности функций SA-MP.

ziggi
03.10.2018, 13:49
Используйте fixes.inc (http://pro-pawn.ru/showthread.php?14040), там уже давно есть фикс для const-корректности функций SA-MP.

Или вот эти инклуды: https://github.com/sampctl/samp-stdlib, https://github.com/sampctl/pawn-stdlib

geneff
03.10.2018, 18:44
Спасибо всем за ответы!!!