- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
char *ptr1;
char *ptr2;
//...
try {
throw ptr2 - ptr1;
}
catch (int e) {
std::cout << "exception addr dif" << e << std::endl;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+165
char *ptr1;
char *ptr2;
//...
try {
throw ptr2 - ptr1;
}
catch (int e) {
std::cout << "exception addr dif" << e << std::endl;
}
Причем тут это? Ты глупый чтоли?
В целом говнокод, но в лёгкой форме. Работает и в целом понятно как.
#ifndef _PTRDIFF_T_DEFINED
#ifdef _WIN64
typedef __int64 ptrdiff_t;
#else
typedef _W64 int ptrdiff_t;
#endif
#define _PTRDIFF_T_DEFINED
#endif
извиняйся!!!
в данный момент я пишу игры на iPhone, когда-то писал под PS3...
Зачем тебе тогда с++? Юзай obj-c.
ну и наши проекты портируются еще на десяток платформ, исправляя код в десятке файлов...
а что не так?
ну и с памятью уже не поработаешь как в С++...
а насчёт "вывалится по обработке" - юзай юнит-тесты, что ли
> ну хотя бы то, что любому объекту можно послать любое сообщение и никто нечего не скажет пока программа не вывалится на его обработке
с++ не меньше падает с сегфолтами
лучше выбрать язык который будет искать ошибки на этапе компиляции, тем более что такой выбор есть...
то-то с++-поделия постоянно вылетают, оказца с++ники не любят юнит-тесты.
проверка ошибок времени компиляции не спасает от ошибок логических, от человеческого фактора (т.е. когда синактически легитимное являеся семантически ошибочным) - поэтому всегда нужно юзать юнит-тесты, какой бы язык не был. а раз ты УЖЕ юзаешь юнит-тесты, то как бы нет смысла пиздеть о том, что методы диспатчатся и вылетают в рантайме - это всё ловится юнит-тестами
сам часто думаю об юнит тестах, но еще не слышал о случаях успешного применения в геймдеве...
да и сроки обычно не позволяют... в бизнес софте функцию на 10 строк могут полгода писать и тестировать, в геймдеве за полгода нужно выдать игру на бетатест...
> это всё ловится юнит-тестами
но все же вопрос остается открытым, зачем выбирать язык который не может отлавливать простейшие синтаксические ошибки??
я сам на нём не кодил, но подозреваю, что по уму можно было бы решить проверкой ИДЕ кода на ввод методов, которых нет в базе ("интеллисенсе") и выводом предупреждений...
с чего это компилятор бракованный? такова сущность языков с динамическим диспатчингом
> ты реально не в теме... причем тут ввод?
я бы тоже спросил, при чём тут ввод. про какой ты ввод? ввод чего и ккуда?
потому как цена ошибки в рантайме в десятки раз больше...
сам часто думаю об юнит тестах, но еще не слышал о случаях успешного применения в геймдеве...
тебе не нравятся вылеты в рантайме... а ассерты как раз и есть вылеты в райнтайме... в случае с юнитами иначе - ты изменил код, затем запустил тест на эту часть кода - и сразу же видишь, успешно код изменён, или есть регрессии... а в случае с ассертами надо полностью загружать программу, с ней работать, ждать пока обвалится, решать всё вручную силами живых бета-тестеров...
в случае геймдева сложным на такую проверку является интеракция человека (движение там)... а так типа код нахождения пути или АИ можно вполне покрывать юнит-тестами
ну и у игр своя специфика, проект пишется сдается откладывается (часто просто забывается), переписывание любой части (допустим с целью оптимизации или просто рефакторинг) обычно задевает код окружающих... те кто пытался внедрить, быстро отказывались, так как они не являются серебряной пулей, а времени на поддержание их актуальности нужно не меньше чем на написание кода...
но я все равно жду удачного опыта внедрения, чтоб потом попробовать самому...
после си++ с его кривыми инклюдами я думал тебе ничего не должно страшно
С с++ также.
я вот, дрочу на С++ и ничего не могу с собой поделать. уже мозоли и волдыри. одна рука накаченая, а другая тощая. а в глазах то как темнеет в пиковые моменты. и каждый день себя карю в этом... а ещё стыдно перед мамой. но ничего сделать с собой немогу...