SA-MP Forums Archive
Не могу разобраться с областью видимости переменных в switch-case - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Не могу разобраться с областью видимости переменных в switch-case (/showthread.php?tid=477932)



Не могу разобраться с областью видимости переменных в switch-case - Urukhay - 27.11.2013

Уже сколько маюсь с этими локальными переменными. Вот на ровном месте буквально!
Почему в этом коде HE пишет ошибку "symbol already defined":
pawn Code:
switch(dialogid)
    {
        case 109:
        {
            new xd;
            new ld;
            return 1;
        }
        case 108:
        {
            new ld;
            switch(ld)
            {
                case 0: { new xd; return 1; }
                case 1: { new xd; return 1; }
            }
            return 1;
        }
   }
А В ЭТОМ ПИШЕТ ТАКУЮ ОШИБКУ?:
pawn Code:
switch(dialogid)
    {
        case 109:
        {
            new name[21];
            return 1;
        }
        case 108:
        {
            new name[21];
            return 1;
        }
    }
Ребят, я вообще хз в чем дело, код буквально одинаковый, просто второй пример я взял из действующих диалогов. ВОТ В ЧЕМ ДЕЛО?


Re: Че за фигня? - Richard_Gere - 27.11.2013

Проверьте может выше создавалась такая переменная или просто поменяйте название.


Re: Че за фигня? - eakwarp - 27.11.2013

Это вопрос неадекватной работы кейсов. Увы, бывает, я уже давно автоматом пишу при создании подобных переменных внутри кейсов в павне, их в виде new (caseid)_nameint;


Re: Че за фигня? - stabker - 27.11.2013

Тоже иногда с этим сталкиваюсь


Re: Че за фигня? - Urukhay - 27.11.2013

Quote:
Originally Posted by eakwarp
View Post
Это вопрос неадекватной работы кейсов. Увы, бывает, я уже давно автоматом пишу при создании подобных переменных внутри кейсов в павне, их в виде new (caseid)_nameint;
Нет ссылочки на туториал как их использовать? Или просто добавлять пристaвку (casied)?


Re: Че за фигня? - eakwarp - 27.11.2013

Quote:
Originally Posted by Urukhay
View Post
Нет ссылочки на туториал как их использовать? Или просто добавлять пристaвку (casied)?
(caseid) - абстрактная приставка, имеется ввиду вот такая конструкция

case 24:
{
new 24_str[255];
...
return 1;
}


Re: Не могу разобраться с областью видимости переменных в switch-case - stabker - 28.11.2013

Сегодня работал со switch и не получил никакого предупреждения о том, что использовал несуществующую переменную О_о. Будьте внимательными


Re: Не могу разобраться с областью видимости переменных в switch-case - Gameyer - 29.11.2013

Скорее всего, переменная name объявлена где-то ранее.