Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 8 из 22 ПерваяПервая ... 6 7 8 9 10 18 ... ПоследняяПоследняя
Показано с 71 по 80 из 216
  1. #71
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от 123 Посмотреть сообщение
    После обновления компилятора до версии 3.10.9, вылезло миллион варнингов типа 214 и 239. Ладно в моем моде, но и в сторонних инклудах типа foreach. И зачем этого было делать? Полезности это не несет.
    Я тоже был поражен, когда заметил, что подобная особенность была включена по умолчанию. Более печальнее еще то, что выключить это, как я понял, невозможно. Как минимум, я не нашел в коде или пулл реквесте ничего, что могло бы отвечать за отключение предупреждений.

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

    Статус
    Оффлайн
    Регистрация
    20.05.2018
    Сообщений
    7
    Репутация:
    0 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Я тоже был поражен, когда заметил, что подобная особенность была включена по умолчанию. Более печальнее еще то, что выключить это, как я понял, невозможно. Как минимум, я не нашел в коде или пулл реквесте ничего, что могло бы отвечать за отключение предупреждений.
    1. #pragma warning disable 239
    2. #pragma warning disable 214

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от 123 Посмотреть сообщение
    И зачем этого было делать? Полезности это не несет.
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Я тоже был поражен, когда заметил, что подобная особенность была включена по умолчанию.
    Я и сам не фанат этого изменения, но сделано оно было не просто так.
    Представим такую ситуацию:
    1. #include <a_samp>
    2.  
    3. PrintString(str[])
    4. {
    5. print(str);
    6. str[0]++;
    7. }
    8.  
    9. PrintHello()
    10. {
    11. PrintString("hello");
    12. }
    13.  
    14. main()
    15. {
    16. PrintHello();
    17. PrintHello();
    18. }

    Если при первом вызове PrintHello() будет выведено "hello", как и задумывалось, то при втором строка уже будет искажена ("iello").
    Проблема в том, что "hello" - это неизменяемый массив, объявленный на месте использования (т.е. внутри вызова PrintString()), но в то же время в функции PrintString() аргумент "str[]" является изменяемым (ибо перед ним нет const) - т.е. из-за недосмотра со стороны автора языка Pawn компилятор позволяет передать константный массив как изменяемый, а дальще функция PrintString() может делать с ним что угодно.

    Для сравнения, если объявить "hello" явным образом (т.е. как именованный константный массив), компилятор не позволит передать его в PrintString():
    1. PrintHello()
    2. {
    3. static const str[] = "hello";
    4. PrintString(str); // error 035: argument type mismatch (argument 1)
    5. }



    Цитата Сообщение от 123 Посмотреть сообщение
    Ладно в моем моде, но и в сторонних инклудах типа foreach.
    Советую не сеять панику, ещё и дня не прошло с момента релиза.
    Более чем уверен, что в инклудах ошибки исправят быстро - либо это сделают сами авторы инклудов, либо другие заинтересованные в исправлении скриптеры.
    К примеру, я уже создал PR с исправлениями для mxINI: https://github.com/Open-GTO/mxINI/pull/1


    Цитата Сообщение от VVWVV Посмотреть сообщение
    Более печальнее еще то, что выключить это, как я понял, невозможно.
    Исправить ошибки в своём коде, нет? (А именно ошибками они и являются. Хорошо ещё, что компилятор в таких ситуациях выдаёт только варнинги, а не ошибки, как с явно объявленными массивами.)
    Пример исправления я показал выше.

    На крайняк, если не хочется ждать, пока ошибки исправят в инклудах, можно в самое начало мода поставить такую заглушку:
    1. #if defined __PawnBuild
    2. #if __Pawn == 0x3A && __PawnBuild >= 9 || __Pawn > 0x3A
    3. #pragma warning disable 214
    4. #pragma warning disable 239
    5. #endif
    6. #endif

    хотя что-то мне подсказывает, что вместо крайнего решения эта заглушка станет раком похуже, чем #pragma tabsize 0.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Было 272 варнинга, полазил в парочке инклудов добавил const и уже их нет, на самом деле его легко фиксить, хорошая обновка, пойду ещё паблики прошерстю и туда подобавляю)0

    UPD: Error 025 выдает, видно не судьбааа
    Последний раз редактировалось Kovshevoy; 30.09.2018 в 14:29.

  5. #75
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    хотя что-то мне подсказывает, что вместо крайнего решения эта заглушка станет раком похуже, чем #pragma tabsize 0.
    Вот и я об этом же.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Исправить ошибки в своём коде, нет? (А именно ошибками они и являются. Хорошо ещё, что компилятор в таких ситуациях выдаёт только варнинги, а не ошибки, как с явно объявленными массивами.)
    Можно, но... ты думаешь большие проекты будут это делать? Ошибка и предупреждение - разные вещи. В этом случае он обязан выдать предупреждение, а не ошибку.

  6. #76
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Можно, но... ты думаешь большие проекты будут это делать? Ошибка и предупреждение - разные вещи. В этом случае он обязан выдать предупреждение, а не ошибку.
    Я думаю, что некая часть больших проектов не знает о существовании других версий компилятора и сидит на стандартном, который папке pawno идет с архивом. Но, это всего лишь предположение.
    Да и как бы, правильней юзать const, почему бы и не поубирать варнинги, это не особо трудно.

  7. #77
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от NichWell Посмотреть сообщение
    Я думаю, что некая часть больших проектов не знает о существовании других версий компилятора и сидит на стандартном, который папке pawno идет с архивом. Но, это всего лишь предположение.
    Да и как бы, правильней юзать const, почему бы и не поубирать варнинги, это не особо трудно.
    1) Есть разработчики, которые используют новый компилятор.
    2) Стоп, я не говорил, что использовать const - неправильно. Не все разработчики библиотек будут это делать, поскольку есть те, которые уже не выкладывают обновления, а фиксить их же код ... Многие новые фичи можно отключить, но это предупреждение нельзя.

    P.S. хотя бессмысленно продолжать данный диалог, лишь потому, что я уже не использую ни один компилятор.
    Последний раз редактировалось VVWVV; 30.09.2018 в 14:38.

  8. #78
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    1) Есть разработчики, которые используют новый компилятор.
    2) Стоп, я не говорил, что использовать const - неправильно. Не все разработчики библиотек будут это делать, поскольку есть те, которые уже не выкладывают обновления, а фиксить их же код ...
    Ну, у меня лично более двухста варнингов было из-за инклуда easyDialog
    Было:
    1. stock Dialog_Open(playerid,function[], style,caption[],info[],button1[],button2[], {Float,_}:...)

    Стало:
    1. stock Dialog_Open(playerid, const function[], style, const caption[], const info[], const button1[], const button2[], {Float,_}:...)


    Сразу минус 250 варнигов, фиксить чей-то код, всего лишь пятью символами в заголовке функции - думаю не такой тяжкий труд.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Можно, но... ты думаешь большие проекты будут это делать?
    Я этого не говорил.


    Цитата Сообщение от VVWVV Посмотреть сообщение
    Ошибка и предупреждение - разные вещи. В этом случае он обязан выдать предупреждение, а не ошибку.
    Так о том и речь, что варнинги вместо ошибок сделали чисто для совместимости - скрипты всё ещё компилируются, а сами варнинги и заглушить можно.


    Цитата Сообщение от NichWell Посмотреть сообщение
    Было 272 варнинга, полазил в парочке инклудов добавил const и уже их нет, на самом деле его легко фиксить, хорошая обновка, пойду ещё паблики прошерстю и туда подобавляю)0

    UPD: Error 025 выдает, видно не судьбааа
    public-функции исправлять не нужно, для них варнинги 214 и 239 отключены.


    P.S.: Может быть стоит создать отдельную тему со ссылками на самые популярные инклуды и плагины и там отслеживать их совместимость с последней версией компилятора?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. #80
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Так о том и речь, что варнинги вместо ошибок сделали чисто для совместимости - скрипты всё ещё компилируются, а сами варнинги и заглушить можно.
    Я не думаю, что это чисто ради совместимости. Было бы глупо видеть ошибку о работающем коде (он работает, но небезопасно).

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    public-функции исправлять не нужно, для них варнинги 214 и 239 отключены.
    Хм.. я либо уже забыл пуфн, либо паблик функции не содержат ошибок?

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    P.S.: Может быть стоит создать отдельную тему со ссылками на самые популярные инклуды и плагины и там отслеживать их совместимость с последней версией компилятора?
    Было бы здорово.

    p.s: странно, что скрытый выход за пределы массива еще не убрали.
    Последний раз редактировалось VVWVV; 30.09.2018 в 14:56.

 

 
Страница 8 из 22 ПерваяПервая ... 6 7 8 9 10 18 ... ПоследняяПоследняя

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

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

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

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

Ваши права

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