Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
1

Опции компилятора Gw/Gy

15.01.2019, 21:31. Просмотров 581. Ответов 3
Метки нет (Все метки)


Может кто разъяснит на, что конкретно влияют опции компилятора Gw и Gy, когда их устанавливаешь одновременно обе то почему-то ниже приведенная функция возвращает "рандомно" не правильные значения.
При этом если поменять тип переменно result с double на float то ошибки при использовании опций не будет.
В чем причина такого поведения?

C++
1
2
3
4
5
6
7
8
9
int GetStatBonus(fo::GameObject* critter, const fo::SkillInfo* info, int skill, int points) {
    double result = 0;
    for (int i = 0; i < 7; i++) {
        result += stat_level(critter, i) * multipliers[skill * 7 + i];  // double*  multipliers 
    }
    result += points * info->skillPointMulti;
    result += info->base;
    return static_cast<int>(result);
}
Ассемблерный код функции при отключении одной из опций никак не меняется (или я не заметил различий)
0
Миниатюры
Опции компилятора Gw/Gy  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2019, 21:31
Ответы с готовыми решениями:

Опции компилятора
Скажите пожалуйста, как можно проверить опции компилятора (с помощью макросов). Какие опции нужно...

Самые строгие и придирчивые опции компилятора
Я обычно добавляю в файл pro две такие строки: QMAKE_CXXFLAGS += -std=c++11 -pedantic CONFIG +=...

Как добавить опции компилятора в Qt Creator
При сборке проекта возникают ошибки: undefined reference to `ChoosePixelFormat@8' и undefined...

Размер ехе-шника. Опции компилятора и линкера
Доброго времени суток, господа программисты!! Переписываю свой скринсайвер на С++ с оптимизацией...

3
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
15.01.2019, 21:37  [ТС] 2
Забыл указать компилятор - vs15
0
14034 / 7517 / 1779
Регистрация: 30.01.2014
Сообщений: 12,570
20.01.2019, 17:13 3
Fakels, multipliers - это глобальный указатель? Можете показать как он объявлен и как инициализируются данные, на которые он указывает?

Да, /Gw влияет на глобальные данные.

И это, учитывая, что контракты у вас не закреплены интерфейсом, а реализуются через умолчания, я бы, для успокоения души, расставил везде ассерты на эти умолчания. (я про магические числа 7 и индексацию данных через голые указатели). Оно может у вас и правильно все, но вам точно будет легче, если вы исключите UB из-за выходов за диапазон ваших массивов.
0
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
26.01.2019, 04:11  [ТС] 4
Цитата Сообщение от DrOffset Посмотреть сообщение
multipliers - это глобальный указатель? Можете показать как он объявлен и как инициализируются данные, на которые он указывает?
да
C++
1
2
3
static double* multipliers;
---
multipliers = new double[7 * fo::SKILL_count]();
Добавил nullptr к multipliers, и ошибка пропала
потом в коде asm я разобрался адрес для multipliers брался неизвестно от какого места.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2019, 04:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ошибка компилятора fatal error C1091: ограничение компилятора: длина строки превышает 65535 байт
Компилируя программу вот такой командой: cl /O2 /Oi /GL /EHsc /MD /Gy main.cpp И компилятор...

Вывод символа с пoмощью опции компилятора
Дали нам такое задание, после первой пары ассемблера: Прогуглил - ничего путного не нашёл,...

Опции
Как сделать программу. Три опции (option), одна Check Выполняются следующие параметры: 1) если...

Опции инструментов
Доброго времени суток всем, итак тут вот решил разобраться немного с инструментом в дельфи, вот...

Вызов опции
Добрый День! Как правильно синтаксично вызвать опцию и дать ей значение (true или false); Что я...

Функциональные Опции
Передо мной стоит задача продавать программу кусками. На слух, вроде, как для этого опции и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.