Строковые литералы и массивы в функции (const-корректность)
Вот функция:
stock TextForPlayer(playerid, str[], time, type, color = COLOR_ORANGE)
{
switch(type)
{
case 0:
{
new
SetTimerEx("@_TextForPlayerTD", time
, false, "dd", playerid
, _:textdraw
); }
case 1:
{
new
SetTimerEx("@_TextForPlayerTD", time
, false, "dd", playerid
, _:textdraw
); }
}
}
и, например при использовании в этой команде:
cmd:time(playerid)
{
new
hour,
minute;
static
fmt_str[] = "%02d:%02d";
new
string[sizeof(fmt_str)-8+4+1];
format(string
, sizeof(string
), fmt_str
, hour
, minute
); TextForPlayer(playerid, string, 4000, 1, COLOR_ORANGE);
}
все нормально и работает, как должно работать.
А при использовании таким образом:
{
TextForPlayer(playerid, "WASTED", 4000, 0, COLOR_RED);
return true;
}
от компилятора прилетает предупреждение:
C:\Users\HP\Desktop\Äîêóìåíòû\2) Pawn\Ìîè ìîäû\Junction RP\gamemodes\JunctionMode.pwn(1508) : warning 239: literal array/string passed to a non-const parameter
и ясно почему - const-корректность.
Но вот как сделать поддержку и массивов, и строковых литералов?