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

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

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

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

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

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

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

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Забыл упомянуть в предыдущем посте с релизом: начиная с версии 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
    Адрес
    Украина
    Сообщений
    157
    Репутация:
    35 ±
    Цитата Сообщение от 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
    Сообщений
    121
    Репутация:
    26 ±
    Блин, а почему #pragma once не приняли? Есть на это какие-то причины?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от 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
    Адрес
    Украина
    Сообщений
    157
    Репутация:
    35 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    ...
    На маппинг компилятор ругался из-за того, что файл был продублирован в нескольких местах. Хотя я вчера и сверял путь несколько раз , но видимо из-за усталости не заметил отличий. В общем, ложная тревога, извини.

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

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

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Вот так вот выдает warning 213. Это баг?
    1. #if !defined MAX_TEST_TEXT_DRAW
    2. const MAX_TEST_TEXT_DRAW = 64;
    3. #endif
    4.  
    5. enum
    6. {
    7. ITEM_FIRST,
    8. ITEM_SECOND
    9. }
    10.  
    11. new Text: g_test_textdraw[MAX_TEST_TEXT_DRAW];
    12.  
    13. main()
    14. {
    15. g_test_textdraw[ITEM_FIRST] = TextDrawCreate(0.0, 0.0, "Warning 213 test!");
    16. }


    Но если же попробовать выводить значение через printf, то варнинга не будет. Как я понимаю, ошибка где-то в определении тэгов? Т.е: вот так вот нет варнинга:

    1. #if !defined MAX_TEST_TEXT_DRAW
    2. const MAX_TEST_TEXT_DRAW = 64;
    3. #endif
    4.  
    5. enum
    6. {
    7. ITEM_FIRST,
    8. ITEM_SECOND
    9. }
    10.  
    11. new Text: g_test_textdraw[MAX_TEST_TEXT_DRAW];
    12.  
    13. main()
    14. {
    15. printf("g_test_textdraw[%d]: %d",
    16. ITEM_FIRST,
    17. g_test_textdraw[ITEM_FIRST]
    18. );
    19. }


    P.S: Pawn compiler 3.10.10
    Последний раз редактировалось tnc; 16.04.2020 в 06:25.

  12. Пользователь сказал cпасибо:
    Daniel_Cortez (16.04.2020)
 

 
Страница 15 из 22 ПерваяПервая ... 5 13 14 15 16 17 ... ПоследняяПоследняя

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

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

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

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

Ваши права

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