🦥Alex Fails
Полезная хрепь для проверки условий, которые обязаны быть истинными
Rafael 🌵
Dumitru
на счет ассертов, кто-то использовал Design by Contract в С++?
Rafael 🌵
Ned
Dumitru
Ссылочку
https://en.wikipedia.org/wiki/Design_by_contract
конкретно в плюсах не знаю как оно работает, и есть ли вообще
🦥Alex Fails
Dumitru
Ned
Ned
я например даже не слышал основных идей
Ned
если ООП можно передать в 2х словах, то что такое контракт?
🦥Alex Fails
🦥Alex Fails
Типа "функция вернет 0, еслм индекс отрицательный", "для функции надо передавать значение x не больше N"
🦥Alex Fails
в17 стандарт пропосал хотели добавить
Dumitru
что это вообще такое?
проще говоря ты есть три условия которые должны быть True
1) все что происходит при вызове метода (pre-condition)
2) все что происходит полсе вызова метода (post-condition)
3) условия которые должны быть True в любом состоянии обьект (скажем сумма денег на счету должна быть >= 0)
Ned
Ned
фактически, если такую херОту добавили б в С++17, я бы сдох от синтаксического сахарного диабета
Richard
Dumitru
и всё?
там момент с их работой
если падает на пре-кондишине криворукий пользователь
если падает на пос-кондишине криворукий разработчик
все это компилится в ассерты что сильно замедляют приложение, поэтому на релизе все контракты как правило вырубают
Ned
ну, мне кажется, такому маленькому девелоперу, как я, это пока ненужно
Ned
а вот где команды, скрам, все дела - там весьма полезно
Dumitru
на самом деле очень полезная штука))
Dumitru
тут есть кто слышал или писал на Eiffel ?
Andrey
Dumitru
это на тему контрактов, это был первый язык где они появились
мало ли..
Крылатый
Крылатый
В 2х словах)
Крылатый
Угу, но кусочек её тут есь)
Ned
сдаётся мне, вся эта херня превратит С++ в один большой снежный ком
Ned
который не столкнуть
Andrey
Ned
он пока на плаву, потому что позволяет делать быстро то, что надо быстро
Ned
но в него налепили почти всё, чтобы сделать его питоном
Ned
dynamic_cast
Ned
ну это так
Ned
шутейка
Artem
void* был с самого начала
Крылатый
Ned
Ned
чот очень хочу D доучить до кондиции, да ток никому оно не надо
Ned
я на нём крошечную ОСь накатал, вряд ли она популяризует его, как юникс взорвал С
Крылатый
HaikuOS (и все BeOS) были на плюсцах в ядре.
Kirill
ртосы еще на плюсах есть
Anonymous
Ребзи а есть какая нибудь конфа по алгоритмам ?
Anonymous
Но их нет я правильно понял ?
🦥Alex Fails
Сделаем
Rafael 🌵
в питоне можно получить имя вызываемой функции в виде строки, в плюсах есть подобный способ?
Artem
http://stackoverflow.com/questions/679021/how-to-find-the-name-of-the-current-function-at-runtime
Detur
имени функции вообще не существует в рантайме
Artem
Загадка
Artem
Почему люди не гуглят
Alexey
да тут гуглить-то не надо,можно просто подумать чуток.. откуда в С++, в скомпилированном бинаре имя функции?.. если только есть отладочная информация
🦥Alex Fails
Alexey
и то она работает только в связке с исходником
🦥Alex Fails
Альзо если оно экспортируется из exe/elf
Rafael 🌵
Alexey
ну если оно экспортируется, то оно будет в таблице экспорта PEфайла
Alexey
там да.. будет имя
Artem
Кто вам сказал, что эти ограничения не удовлетворяются
Alexey
хотя может экспортироваться и не по имени
Alexey
на этапе компиляции препроцессор? с отладочной инфой
Alexey
макрос __func__
Rafael 🌵
🦥Alex Fails
Alexey
посмотри точно. вроде в студии и gcc они чуток по разному обзываются
🦥Alex Fails
Да
Крылатый
Он и в GCC __func__ должен быть.
Крылатый
Штандартно же.
Rafael 🌵
C99 introduces __func__, and GCC has provided __FUNCTION__ for a long time. Both of these are strings containing the name of the current function (there are slight semantic differences; see the GCC manual). Neither of them is a macro; the preprocessor does not know the name of the current function. They tend to be useful in conjunction with __FILE__ and __LINE__, though.
https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html
Alexey
ну вот) оно
Rafael 🌵
вот еще лучше:
https://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
ovf