06.02.2017, 14:09
Не знаю, известно ли это всем. Нашел сегодня такой баг компилятора, что если внутри case любого switch объявить двух или трехмерный массив, то предшествующие ему переменные, внутри этого кейса, в дальнейших кейсах будут вести себя так, будто они уже объявлены. Иллюстрация проблемы ниже:
Если раскомментировать все, связанное с массивом troublemaker, то в обозначенной строке 2-го кейса будет ошибка (как и во всех последующих случаях).
PHP Code:
justfortest()
{
switch(random(3))
{
case 0:
{
new normal = 1;
printf("", normal);
}
case 1:
{
new subject = 1;
/*new troublemaker[2][2] =
{
{ 1, 2 },
{ 3, 4 }
};*/
new subject_1 = 1;
printf("", subject, subject_1/*, troublemaker[0][0]*/);
}
case 2:
{
new subject = 1; //error 021: symbol already defined: "subject"
new subject_1 = 1;
printf("", subject, subject_1);
}
}
}
main()
{
justfortest();
}