в С++ нет числа π в стандартной библиотеке. M_PI/_USE_MATH_DEFINES зачем-то сломали в g++ при использовании -std=c++11, а взамен ничего не предложили
( Read more... )
alll А зачем нужно число пи в стандартной библиотеке? Собственно, зачем вообще какие-то нетривиальные математические функции в стандартной библиотеке, являющейся частью языка? Типа "если б я был король, я б жил лучше, чем король - ведь я таки ещё немножечко шью"?
_winnie Не понял. Если в стандартной библиотеке нет чего-то, что часто нужно, и при этом быстро реализуется копипастой 1-5 строк - то вскоре эта копипаста расползается по миллиону мест. Например, данное решение об удалении M_PI - приведёт к куче разнобразных определений числа pi в каждом сотом .cpp файле. Кстати, оценка каждый сотый файл с числом π - в данном случае не совсем с неба, я проверил на большой кодобазе с кучей библиотек (искал '\bM_PI\b' и '\b3.141', использование кастомных констант MY_LIBRARY_PI=3.14159... не считал)
alll Если что-то достаточно часто используется в нормальных проектах, то со временем появляются общедоступные библиотеки, реализующие это что-то. Впихивать без мыла в стандарт _языка_ то, что не относится собственно к языку - дешёвый популизм,
( ... )
Протаскивать файл на все машины, и добавлять include/path в настройку компилятора, и протаскивать этот файл всем пользователям своего кода (преподавателям/однокурсникам/снипет кода в форуме) - менее тривиально, чем копипастить однострочники :(
А если бы оно было в math.h на всех компиляторах - тогда можно смело делиться компилирующимся снипетом кода, без "ну вы ещё инсталлируйте boost".
Ну понятно, что если бы было, то было бы хорошо. Но я ж имел тоже вариант с уже готовым цельным проектом, где пути инклудов настраиваются под использующуся билд систему, а не какими-то непонятными обрывками.
Comments 8
alll А зачем нужно число пи в стандартной библиотеке? Собственно, зачем вообще какие-то нетривиальные математические функции в стандартной библиотеке, являющейся частью языка? Типа "если б я был король, я б жил лучше, чем король - ведь я таки ещё немножечко шью"?
_winnie Не понял.
Если в стандартной библиотеке нет чего-то, что часто нужно, и при этом быстро реализуется копипастой 1-5 строк - то вскоре эта копипаста расползается по миллиону мест.
Например, данное решение об удалении M_PI - приведёт к куче разнобразных определений числа pi в каждом сотом .cpp файле.
Кстати, оценка каждый сотый файл с числом π - в данном случае не совсем с неба, я проверил на большой кодобазе с кучей библиотек (искал '\bM_PI\b' и '\b3.141', использование кастомных констант MY_LIBRARY_PI=3.14159... не считал)
alll Если что-то достаточно часто используется в нормальных проектах, то со временем появляются общедоступные библиотеки, реализующие это что-то. Впихивать без мыла в стандарт _языка_ то, что не относится собственно к языку - дешёвый популизм, ( ... )
Reply
Reply
Зачотно!
Reply
Удивительно трепетное отношение к комментариям!
Reply
Reply
Зачем же в каждом cop писать? static const в свой хидер и включать его по надобности.
Reply
А если бы оно было в math.h на всех компиляторах - тогда можно смело делиться компилирующимся снипетом кода, без "ну вы ещё инсталлируйте boost".
Reply
Reply
Leave a comment