Richard
бери студию тогда, ставить gcc/clang на винду начинающему - боль
Почему начинающему ставить GCC в винду боль? Clang да, боль, но GCC нет же :) Качается mingw, распаковывается куда-то в C:\mingw, в системную переменную PATH дописать путь C:\mingw\bin. Все готово :). P.S. Не берем то, что лучше делать конфигурирование таких дел через специальный батник и прочие дела. Для старта такой метод вполне норм)
Richard
Я о случае, когда Visual Studio не ставится.
Dr. Friedrich
Кланг в опциях в вижуал выбрать можно при установке. Не знаю ведёт ли это к боли.
Кто-нибудь пробовал этот режим, кстати? Что меняется с фактической точки зрения? Она просто начинает парсить больше кода с фичами последних стандартов?
Richard
Кто-нибудь пробовал этот режим, кстати? Что меняется с фактической точки зрения? Она просто начинает парсить больше кода с фичами последних стандартов?
Вроде как это форк мелкомягких, но все равно clang. По факту он должен открывать доступ к "стандартным плюсам", а не "близкими к оригинальным", плюс кросс-компиляция для линукса
Anatoly
Юзать внутри не TCHAR, а char: CreateProcessA
Лучше все же в терминах TCHAR программировать под винду, а то уберут поддержку MBCS и ...
Александр
Лучше все же в терминах TCHAR программировать под винду, а то уберут поддержку MBCS и ...
Ну если человек передает в функцию char, то это уже не феншуй с точки зрения TCHAR
Nikolai
Я уже один раз разбирал такой код, да ну его нафиг. Чувак свалил с работы, а мы потом его код 1,5 года переписывали
Anatoly
сам по себе TCHAR не мешает переходить на другую платформу, основная работа так или иначе в реализации и обрамлении ее в #ifdef/#endif
Крылатый
https://github.com/George3d6/striga
🦥Alex Fails
#repo
Дмитрий
Да простят модераторы и меня, но я бы почитал этот FAQ
🦥Alex Fails
/rules
Alignant
Народ, тут такое дело. В VS два проекта в одном солюшине. Я хочу реализовать в одном одни и те же функции/классы. У меня есть файлы foo.h и foo.cpp Но если включать foo.h без реализации в другой проект, то оно выбивает ошибку линковки. Работает только если в foo.h ещё и реализацию впилить, но это не то. Как лучше сделать?
Berkus
линковать foo.cpp и там и там
Berkus
ну или вынести его в либу
Constantine
Обычно это повод .dll делать
Igor
линковать foo.cpp и там и там
Вроде, еще есть какая-то магия с указанием первого проекта в References другого, и тогда он типа будет и объектники в него перетягивать... но у меня всего однажды сработало
Berkus
ну в студии конечно свои извращения, но стандартный подход делать общую либу для общей функциональности
Alignant
Народ, я слепой? Суть такая. Юзаю гуглтест. d:\projects\googletest_proj\tests.cpp(83): error: The difference between _array[1] and 6.38619e+302 is 1.2988301524519478e+296, which exceeds error, where _array[1] evaluates to 6.3861912988301526e+302, 6.38619e+302 evaluates to 6.3861900000000002e+302, and error evaluates to 0.001. Как так, разница не должна быть такая большая же?
Berkus
в 302 степени это довольно много ноликов
ep
> Как так, разница не должна быть такая большая же? Ну, разница никому ничего не должна, она просто есть как есть. Значит что-то считаешь неправильно.
ep
6.3861912988301526e+302 - 6.3861900000000002e+302 Out[155]: 1.2988301524519478e+296
Berkus
сильно больше 1e-3 )
ep
А что ты хотел на таких порядках? Огромные числа же :)
ep
О, свидетели IEEE 754 здесь!
Гуглотест использует неточное сравнение, тут просто ошибка в расчётах
Alignant
О, свидетели IEEE 754 здесь!
Решил разобраться с плавающей точкой, а то слишком часто с ней лажаю
ep
У тебя разница получилась вот такая (если в длинные инты переводить): 129883015245194775160376122164480457427417866353789924189149283092486783829659571800122976739301806224650928004336422124247307345926274877815197088591974816860196637897311342435537340962203760970615791769565305983726047323378307714008942126408247104795124753916737183397204955337394912198322552832
Alignant
Если вычесть 6.3861912988301526e+302- 6.38619e+302 То да, разница будет большая. Хотя я не понимаю почему. Целая часть-то 6, количество нулей одинаковое. Разница должна быть небольшой вроде. Или я что-то не так посчитал.
Alignant
А, стоп
Alignant
Да
Nikita
Alignant
Разница и должна быть большой
Alignant
Ведь если умножить на мантису, то должно быть много.
ep
> Целая часть-то 6, количество нулей одинаковое. Целая часть там не 6. Это же экспоненциальная запись.
ep
1.545e+3 Out[167]: 1545.0
Alignant
А где-то есть double_eps? ну допустим в limits?
ep
Конечно. Там и смотри.
Constantine
А где-то есть double_eps? ну допустим в limits?
А что подразумевается под double_eps?
ep
std::numeric_limits<double>::epsilon полагаю
Constantine
Просто не очевидно, что автор хочет увидеть
Alignant
Я уже нашел. DBL_EPSILON есть. Погрешность дабла.
Constantine
Просто не существует понятия "погрешность дабла"
ep
Я уже нашел. DBL_EPSILON есть. Погрешность дабла.
Используй numeric_limits http://en.cppreference.com/w/cpp/types/numeric_limits
Alignant
Просто не существует понятия "погрешность дабла"
Если дабл хранит числа с определенной точностью, то должна быть и погрешность :D
Nikita
Просто не существует понятия "погрешность дабла"
Относительная погрешность элементарных арифметических операций с даблом (fixed)
Constantine
Там есть денормированные случаи
Constantine
Если дабл хранит числа с определенной точностью, то должна быть и погрешность :D
Множество возможных значений double очень не очевидная вещь
Constantine
Если дабл хранит числа с определенной точностью, то должна быть и погрешность :D
Например, void f(){ double x = 1.0; for (int i = 0; i < 100000; i++) x *= 1.1; //и какая относительная погрешность будет? }
melvin
есть pro.asm?
melvin
спасибо
melvin
отстраненный вопрос Для отслеживания точек возврата из подпрограмм используется стек вызовов. почему именно стек?
melvin
деревья,очереди...
melvin
неа
melvin
не очень
Constantine
(1+€/1.1)^10^5 - 1 ~ +€*10^5 ?
ниасилил, но я умею прикидывать 1.1^(10^5)
Berkus
отстраненный вопрос Для отслеживания точек возврата из подпрограмм используется стек вызовов. почему именно стек?
потому что вложенность подпрограмм имеет определенную структуру - возвращаешься ты обычно именно туда, откуда тебя вызвали
melvin
а для чего существует стек на более низком уровне?
Berkus
именно для этого
Nikita
ниасилил, но я умею прикидывать 1.1^(10^5)
Оценка в худшем случае. Если каждый раз получаем (1.1+€)x вместо 1.1x, то итоговая относительная погрешность — ((1.1+€)/1.1)^(10^5) -1. Дальше в Тейлора разложил
melvin
просто я не понимаю: команды из стека ведь извлекаются в обратном порядке
melvin
верно, но если мы говорим не о функции
melvin
что нибудь в духе int x = 1; int y = x*2; int z = x+y;
Nikita
1.1 x -> 1.1(1+eps)x = (1.1 + 1.1eps)x € = 1.1 eps
melvin
ведь после трансляции тоже получим последовательность комманд
Constantine
1.1 x -> 1.1(1+eps)x = (1.1 + 1.1eps)x € = 1.1 eps
А ничего, что результат работы программы будет +inf?