Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 18 из 22 ПерваяПервая ... 8 16 17 18 19 20 ... ПоследняяПоследняя
Показано с 171 по 180 из 216
  1. #171
    Аватар для nekaz
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.02.2014
    Сообщений
    19
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Начиная с версии 3.10.10 с компилятором требуется использовать модифицированные инклуды SA-MP, в которых исправлена проблема с const-корректностью и множество других недочётов.
    Подробнее о const-корректности: https://pro-pawn.ru/showthread.php?16434
    Ага, все вопрос снят, спасибо.

  2. #172
    Аватар для tnc
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    @Daniel_Cortez, а этот баг до сих пор не исправлен?

    https://github.com/pawn-lang/compiler/issues/181
    https://github.com/pawn-lang/compiler/issues/350

    Если нет, то возможно, что ты захочешь исправить в своей версии компилятора?
    Последний раз редактировалось tnc; 13.07.2020 в 18:58.

  3. #173
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    @Daniel_Cortez, а этот баг до сих пор не исправлен?

    https://github.com/pawn-lang/compiler/issues/181
    https://github.com/pawn-lang/compiler/issues/350

    Если нет, то возможно, что ты захочешь исправить в своей версии компилятора?
    Если вкратце, не углубляясь в суть бага, то придётся переписывать очень много кода (а именно - заставить компилятор хранить препроцессированные тексты в UTF-8 вместо того, чтобы переключаться между разными кодировками), и я сомневаюсь, что исправление вообще примут, судя по тому, как в репо компилятора до сих пор висят полтора десятка куда более простых PRов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. #174
    Аватар для tnc
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    окей, если фикс не прокатит в upstream, то может быть стоит, хотя-бы сделать диагностику этого? Ибо на днях, я столкнулся с этой проблемой и потратил 5 минут, чтобы понять, почему перестал компилироваться мод. Я знал об этом баге, но что если новички, которые не знают об этом баге? Они потратят много времени, чтобы найти почему компилятор ушел в infinite loop (это новая версия от pawn-lang, дефолтный компилятор 3.2 (который поставляется с сервером скорее всего вообще крашнит)

  5. #175
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    окей, если фикс не прокатит в upstream, то может быть стоит, хотя-бы сделать диагностику этого? Ибо на днях, я столкнулся с этой проблемой и потратил 5 минут, чтобы понять, почему перестал компилироваться мод. Я знал об этом баге, но что если новички, которые не знают об этом баге? Они потратят много времени, чтобы найти почему компилятор ушел в infinite loop (это новая версия от pawn-lang, дефолтный компилятор 3.2 (который поставляется с сервером скорее всего вообще крашнит)
    Во-первых, багу подвержены все версии компилятора, и последний релиз 3.10.10 может крашнуть примерно с такой же вероятностью, как и стоковый 3.2.3664.
    Во-вторых, даже если и рассматривать вариант с диагностикой как временную меру, пока что я не уверен, как такую диагностику можно было бы реализовать в более-менее приемлемом виде. Если добавить её как простой варнинг, компилятор всё равно будет крашить; если же сделать её как fatal error - это предотвратит краш путём прерывания компиляции, но будет выглядеть избыточным ради одного бага.
    В-третьих, есть куча других багов, которые нужно исправить, и фич, которые я хотел бы добавить к следующему релизу компилятора, и на всё это мне приходится тратить своё личное время. Именно поэтому пока что я занимаюсь теми багами, которые я знаю, как исправить, и фичами, которые я знаю, как реализовать. Касаемо бага с кодировками, возможно, получится исправить его позже (например, если вдруг удастся наткнуться на более-менее простое решение во время исправления другого бага - такое уже бывало, и не раз).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #176
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    "Неофициальный" релиз 3.10.10+ от 06.09.2020.

    Скачать: https://www.dropbox.com/s/v5gvuwi0s2...0.10x.zip?dl=1
    Модифицированные инклуды SA-MP: https://github.com/pawn-lang/samp-st...3.7-R2-1-1.zip

    • Улучшены диагностики для обнаружения недостижимого кода ("warning 225: unreachable code").
      Теперь компилятор умеет находить "мёртвый" код в следующих случаях:
      • Когда все case в switch (в том числе default) заканчиваются оператором "return", "break", "continue" или любым другим "завершающим" оператором:
        1. switch (value)
        2. {
        3. case 0: return 0;
        4. case 1..10: return 2;
        5. default:
        6. {
        7. print("??");
        8. return 3;
        9. }
        10. }
        11. return 4; // warning 225: unreachable code


      • Когда разные ветви if заканчиваются разными видами "завершающих" операторов:
        1. new x;
        2. do {
        3. if (x)
        4. break;
        5. else
        6. continue;
        7. x++; // warning 225: unreachable code
        8. } while (x);

        Раньше компилятор замечал недостижимый код только когда обе ветви if заканчивались одинаковыми операторами (например, обе на return).

      • После оператора goto, когда дальше нет никаких меток и можно точно определить, что дальнейший код никогда не выполнится:
        1. label_1:
        2. goto label_1;
        3. return 0; // warning 225: unreachable code



    • Исправлен баг, из-за которого можно было совершать присвоения к константным многомерным массивам.
      1. new const a[1][1];
      2. a[0][0] = 0; // такой код компилировался без ошибок, несмотря на то,
      3. // что массив должен быть неизменяемым ("const")

      Отдельное спасибо DeimoS'у за то, что сообщил о данном баге.

    • Исправлен баг, связанный с возвратом массивов из функций напрямую.
      1. ReturnString0()
      2. {
      3. return "abc";
      4. }
      5.  
      6. ReturnString1()
      7. {
      8. // при повторном возврате массива, возвращённого напрямую из другой функции, генерировался
      9. // неправильный байткод, приводящий к сбою (ошибке времени выполнения) на сервере
      10. return ReturnString0();
      11. }

      Подробнее об этом баге можно узнать из статьи "Почему не следует возвращать строки/массивы напрямую".

    • Исправлен баг, из-за которого компилятор при использовании тернарного оператора на массивах не учитывал размер 3-го аргумента.
      1. static const str1[] = "123", str2[] = "12";
      2. new result[3];
      3. new x = 0;
      4.  
      5. // данный код компилируется с ошибкой, т.к. массив "result" слишком мал, чтобы вместить строку "123"
      6. result = x ? str1 : str2; // error 047: array sizes do not match, or destination array is too small
      7.  
      8. // однако такой код компилировался без единой ошибки или даже варнинга
      9. result = x ? str2 : str1;


    • Исправлены баги, из-за которых компилятор ошибочно считал код недостижимым
      • когда в ветвлении if ветвь true заканчивается на return, а ветвь false пустая:
        1. new const bool:TRUE = true;
        2. if (TRUE) { return 1; }
        3. else {}
        4. return 0; // warning 225: unreachable code


      • когда после ветвления, обе ветви которого заканчиваются на return, следует метка, использованная ранее через goto:
        1. new var = 0;
        2. if (var == 0)
        3. goto label_1;
        4. if (var != 0)
        5. return 0;
        6. else
        7. return 1;
        8. label_1: // warning 225: unreachable code
        9. return 2; // на самом деле этот код достижим, поскольку ранее
        10. // был совершён переход ("goto") на метку "label_1"


    • Устранён недочёт, из-за которого компилятор позволял объявлять операторы с атрибутом public.
      Пример:
      1. public operator=(Tag:a) return _:a;

      Очевидно, что атрибут public по идее не должен быть применим к операторам, однако раньше такой код компилировался без единого варнинга. Теперь же компилятор не позволит этого сделать:
      Код:
      error 056: arrays, local variables, function arguments and user-defined operators cannot be public (symbol "operator =(Tag:)")
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. 2 пользователя(ей) сказали cпасибо:
    DeimoS (09.09.2020) Pa4enka (07.09.2020)
  8. #177
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Касаемо модифицированных инклудов - в той версии, которая прикреплена, не исправлена const-корректность для многих функций. Она исправлена только для инклудов версии 0.3DL. При этом, релизная версия иклудов под 0.3DL тоже устарела. Свежую версию можно получить только при загрузке архива с основной веткой - https://github.com/pawn-lang/samp-st...ive/master.zip. Правда, опять же, тут включены функции для 0.3DL.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #178
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Касаемо модифицированных инклудов - в той версии, которая прикреплена, не исправлена const-корректность для многих функций. Она исправлена только для инклудов версии 0.3DL. При этом, релизная версия иклудов под 0.3DL тоже устарела. Свежую версию можно получить только при загрузке архива с основной веткой - https://github.com/pawn-lang/samp-st...ive/master.zip. Правда, опять же, тут включены функции для 0.3DL.
    Это довольно давно известно (https://github.com/pawn-lang/samp-stdlib/issues/27) и даже с того момента ничего не предпринято
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  10. #179
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Это довольно давно известно (https://github.com/pawn-lang/samp-stdlib/issues/27) и даже с того момента ничего не предпринято
    Да, я видел твоё сообщение. Потому, собственно, сам не стал туда писать и решил просто сообщить на форуме, что ссылка ведёт на кривые файлы.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  11. #180
    Аватар для Pro_Coder
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.10.2020
    Сообщений
    59
    Репутация:
    2 ±
    Вы не думали, почему бы не сделать двумерный массив для enum ?

    https://pro-pawn.ru/showthread.php?1...ll=1#post61896

    Например, я хотел хранить несколько имен в p_Name[4][MAX_PLAYER_NAME + 1] , но мне выдает ошибка
    PHP код:
    enum e_pInfo {
        
    p_ID,
        
    p_Password[64 1],
        
    p_Salt[64 1],
        
    p_Name[4][MAX_PLAYER_NAME 1]
    };
    new 
    pInfo[MAX_PLAYERS][e_pInfo]; 
    Код HTML:
    error 001: expected token: "}", but found "["
    error 010: invalid function or declaration

 

 
Страница 18 из 22 ПерваяПервая ... 8 16 17 18 19 20 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •