Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 15 из 15 ПерваяПервая ... 5 13 14 15
Показано с 141 по 149 из 149
  1. #141
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    158
    Репутация:
    9 ±
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    Объяснишь поконкретнее?) Т.е. теперь тэг энума (_:) не распространяется на его составляющие? Или что имелось ввиду?
    То есть теперь выдаст ошибку:

    error 001: expected token: "-identifier-", but found "-label-"

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Сообщений
    212
    Репутация:
    2 ±
    Цитата Сообщение от execution Посмотреть сообщение
    То есть теперь выдаст ошибку:

    error 001: expected token: "-identifier-", but found "-label-"
    Да я это понял. А что с использованием анонимных энумов - их теперь нельзя использовать или как?

  3. #143
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    158
    Репутация:
    9 ±
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    Да я это понял. А что с использованием анонимных энумов - их теперь нельзя использовать или как?
    Где ты увидел, что их использовать нельзя и т.п.?
    Если ты будешь использовать в анонимных перечислителях константы с тэгами, то выдаст ошибку.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Сообщений
    212
    Репутация:
    2 ±
    Цитата Сообщение от execution Посмотреть сообщение
    Где ты увидел, что их использовать нельзя и т.п.?
    Если ты будешь использовать в анонимных перечислителях константы с тэгами, то выдаст ошибку.
    Я понял тебя) Т.е. в энуме константы идут в порядке возрастания, а с разными тэгами возрастание невозможно (например сначала идет константа с тэгом Float: и со значение 1.2, а потом пустая с тэгом _:, и по сути константа-переменная должна хранить 2.2, но переменные не могут хранить плавающие значения).
    Последний раз редактировалось Steve_Stage; 09.02.2020 в 13:59.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,074
    Репутация:
    2459 ±
    Забыл упомянуть в предыдущем посте с релизом: начиная с версии 3.10.10 требуется использовать модифицированные инклуды SA-MP (со стандартными будет куча новых warning 239 при использовании функций SA-MP, т.к. в них не исправлены проблемы с const-корректностью).
    Для этого перейдите по этой ссылке, в правом верхнем углу нажмите зелёную кнопку "Clone or download", затем в открывшемся меню "Download ZIP", после чего из скачавшегося ZIP-архива скопируйте инклуды в папку "pawno/include".


    Тем временем, как и было обещано, я подготовил неофициальный билд, в который добавил пару-тройку фич, которые почему-то не были рассмотрены перед подготовкой релиза 3.10.10.

    Изменения (в сравнении с официальным билдом 3.10.10):
    • Добавлена диагностика для обнаружения использования неинициализированных переменных (warning 210).
    • Устранён недочёт с отсутствием проверки на несовпадение тегов между выражениями в switch и case.
    • (NEW) Добавлены/улучшены диагностики для обнаружения неиспользуемых присвоений к переменным:
      • Улучшена работа warning 204 (выдаётся, когда переменной присвоено значение, но оно не используется), теперь она работает в большем количестве случаев.
        Пример работы:
        1. main()
        2. {
        3. new n = 1;
        4. printf("%d", n);
        5.  
        6. // Присвоим переменной "n" новое значение, но оставим его неиспользованным.
        7. // По идее это лишний код, но раньше компилятор не замечал его (потому что
        8. // переменная была использована в 'printf()'), теперь же он выдаёт предупреждение.
        9. n = 2; // warning 204: symbol is assigned a value that is never used: "n"
        10. }

      • Добавлена диагностика warning 240 (предыдущее значение, присвоенное к переменной, не было использовано).
        Пример работы:
        1. main()
        2. {
        3. new n = 1;
        4.  
        5. // Присвоим переменной новое значение, при этом прежнее ("1") не будет использовано.
        6. // Это тоже лишний код, но не совсем такой, как в warning 204 (т.к. неиспользованным
        7. // остаётся не текущее значение переменной, а предыдущее), потому новый warning.
        8. n = 2; // warning 240: previously assigned value is never used (symbol "x")
        9. printf("%d", n);
        10. }


    Скачать: https://www.dropbox.com/s/v5gvuwi0s2...0.10x.zip?dl=1
    Исходный код: https://github.com/Daniel-Cortez/paw...e/master-fixes
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. 2 пользователя(ей) сказали cпасибо:
    DeimoS (12.02.2020) Pa4enka (12.02.2020)
  7. #146
    Аватар для Pa4enka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    107
    Репутация:
    15 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    ...
    Либо твой форк немного сыроват, либо мои руки не готовы к нему :)

    1. warning 240: previously assigned value is never used (symbol "tmpobjid")

    Выдает на все строки кода маппинга, где tmpobjid = CreateDynamicObject. Логика компилятора понятна, но, увы, ложная. Ибо даже убрав "tmpobjid =", компилятор все еще видит ошибку. Маппинг - pastebin(в этом варианте я убрал лишние присвоения, но компилятор все равно орет)

    Компилятор так же сообщил мне, что существуют ошибки в инклудах YSI:

     Ошибки
    YSI_Storage\..\YSI_Internal\..\amx\codescan.inc(764) : warning 213: tag mismatch: expected tag "bool", but found none ("_")
    YSI_Storage\..\YSI_Internal\..\amx\codescan.inc(770) : warning 213: tag mismatch: expected tag "bool", but found none ("_")
    YSI_Storage\y_amx.inc(997) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Storage\y_amx.inc(1032) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(299) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(359) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(550) : warning 210: possible use of symbol before initialization: "count"
    YSI_Coding\y_hooks/impl.inc(591) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(1050) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(1140) : warning 210: possible use of symbol before initialization: "idx"


    Предполагаю, что версия библиотеки устарела, ибо временно компилирую без sampctl, но этот вариант чуть позже проверю.
    Последний раз редактировалось Pa4enka; 12.02.2020 в 02:55.

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    22
    Репутация:
    1 ±
    Блин, а почему #pragma once не приняли? Есть на это какие-то причины?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,074
    Репутация:
    2459 ±
    Цитата Сообщение от Pa4enka Посмотреть сообщение
    Либо твой форк немного сыроват, либо мои руки не готовы к нему :)

    1. warning 240: previously assigned value is never used (symbol "tmpobjid")

    Выдает на все строки кода маппинга, где tmpobjid = CreateDynamicObject. Логика компилятора понятна, но, увы, ложная. Ибо даже убрав "tmpobjid =", компилятор все еще видит ошибку. Маппинг - pastebin(в этом варианте я убрал лишние присвоения, но компилятор все равно орет)
    Пробовал скомпилировать вот так:
      Открыть/закрыть
    1. #include <a_samp>
    2. #include <streamer>
    3. #include <YSI_Coding\y_hooks>
    4.  
    5. {
    6. new
    7. tmpobjid,
    8. map_world = 0, map_int = 0;
    9.  
    10. tmpobjid = CreateDynamicObject(19366, 1755.166015, -1898.626953, 12.501999, 0.000000, 90.000000, 0.000000, map_world, map_int, -1, 200.00, 200.00);
    11. SetDynamicObjectMaterial(tmpobjid, 0, 10101, "2notherbuildsfe", "Bow_church_grass_alt", 0x00000000);
    12.  
    13. // всё остальное, что было в листинге на pastebin
    14.  
    15. return Y_HOOKS_CONTINUE_RETURN_1;
    16. }

    Ни на 4-й, ни на 5-й версии YSI не было никаких варнингов касаемо tmpobjid. Я что-то делаю не так?

    Цитата Сообщение от Pa4enka Посмотреть сообщение
    Компилятор так же сообщил мне, что существуют ошибки в инклудах YSI:

     Ошибки
    YSI_Storage\..\YSI_Internal\..\amx\codescan.inc(764) : warning 213: tag mismatch: expected tag "bool", but found none ("_")
    YSI_Storage\..\YSI_Internal\..\amx\codescan.inc(770) : warning 213: tag mismatch: expected tag "bool", but found none ("_")
    YSI_Storage\y_amx.inc(997) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Storage\y_amx.inc(1032) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(299) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(359) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(550) : warning 210: possible use of symbol before initialization: "count"
    YSI_Coding\y_hooks/impl.inc(591) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(1050) : warning 210: possible use of symbol before initialization: "idx"
    YSI_Coding\y_hooks/impl.inc(1140) : warning 210: possible use of symbol before initialization: "idx"


    Предполагаю, что версия библиотеки устарела, ибо временно компилирую без sampctl, но этот вариант чуть позже проверю.
    Насчёт варнингов в YSI - давно известная проблема, ибо там во многих местах используют "new idx;" вместо "new idx = 0;". По-хорошему, есть смысл исправить это в самой библиотеке, но я ей не пользуюсь, и поэтому не могу знать обо всех местах, где выдаётся warning 210.
    Пока что в качестве обходного пути могу только предложить временно отключить варнинг перед подключением инклудов из YSI (в теме про warning 210 написано, как это сделать).
    И да, на счёт варнингов в codescan.inc интересно, я не смог их воспроизвести у себя. Можешь где-нибудь выложить ту версию инклуда, которая у тебя (он должен быть в папке "amx_assembly")?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. #149
    Аватар для Pa4enka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    107
    Репутация:
    15 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    ...
    На маппинг компилятор ругался из-за того, что файл был продублирован в нескольких местах. Хотя я вчера и сверял путь несколько раз , но видимо из-за усталости не заметил отличий. В общем, ложная тревога, извини.

    YSI апдейтнул до последней версии с официального гитхаба и те ошибки с несовпадением тегов пропали, но как только я возвращаю обратно старую версию - варнинги появляются.

    Посмотреть файл
    Ругается на switch внутри функции "CodeScanRun", конкретно "case -1" и "case 0".
    Файл находится в папке "amx".
    Версия YSI: 4.0.0 либо 4.0.1

 

 
Страница 15 из 15 ПерваяПервая ... 5 13 14 15

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

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

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

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

Ваши права

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