|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Ошибка при конпиляции (OregonCore) |
Ошибка при конпиляции |
Помогите исправить ошибку
Код E:\ishodd\src\scripts\Custom\npc_titles.cpp(46): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(48): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(49): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(70): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(72): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(73): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(94): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(96): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака 16>E:\ishodd\src\scripts\Custom\npc_titles.cpp(97): warning C4146: применение унарного минуса к типу без знака; результат оставлен без знака
Сервер WoW 2.4.3 ZetSmart(OregonCore) - отличная работоспособность и множество интересных патчей.
http://wowjp.net/forum/123-299941-1 Продажа исходников OregonCore. https://wowjp.net/forum/187-310795-1
Сообщение # 1 написано 09.01.2016 в 16:14
|
Ох уж эти вовжоперские конпеляторы.))
getConfig возвращает значение беззнакового типа (unsigned), скорее всего uint32. Применение унарного минуса в данном случае может привести к неприятным неожиданностям, поэтому компилятор игнорирует это действие и выводит предупреждение. Перед применением унарного минуса приведите значение к знаковому типу. Замените "-" на "-(int32)" в данном случае.
Сообщение # 3 написано 09.01.2016 в 17:22
|
Стоит отметить, что у Вас при умножении не проверяется переполнение типа. И хотя беззнаковые типы не переполняются так, как это делают знаковые (с UB), результат вычисления std::numeric_limits<T>::max() * val, где val > 1 и имеет тип T, а T - целочисленный беззнаковый тип, может привести к неожиданным последствиям.
А с учетом последующего приведения типа с возможной потерей данных (unsigned -> signed), может и вовсе мясо получиться. Однако, это возможно только если в конфиге будут указаны некорректные данные. |
| |||
| |||