Драфт C++0x [.pdf]. В нем будут делаться багфиксы, будут некоторые уточнения, но ничего принципиально нового уже не будет. Герб Саттер говорит, что это что-то вроде бета версии. Планируется, что после нее будет еще одна бета, а потом уже релиз.
среда, октября 29, 2008
пятница, октября 24, 2008
Странные примеры использования const
const - штука хорошая. Благодаря ему мы можем писать const-корректный код и избежать части глюков.
А вот несколько необычные примеры применения const.
1. void MyFunction ( const int var);
2. const int MyFunction();
3. int const MyFunction();
Предлагаю подумать над вопросами "что бы это значило?" и "где это можно применить?". И написать об этом в комментарии, если не лень.
Я свое мнение напишу чуть позже.
Updated
Как и обещала, мое мнение:
1. Нельзя будет поменять переменную var внутри функции. Я не знаю, возможно в чьих-нибудь стандартах кодирования заставляют так делать, но вообще это не принято.
2 и 3, как многие уже заметили, эквивалентны. И бесполезны. Обратите внимание, что возвращаемое значение const int. Если вы возвращаете класс, то смысл в этом будет.
Нет, можно придумать какие-нибудь странные использования этих выражений и даже заставить некоторые компиляторы их проглотить. Но вот Comeau на такое скажет
"ComeauTest.c", line 2: warning: type qualifier on return type is meaningless
const int MyFunction()
И будет прав. Бессмысленны и const, и volatile. Я как-то случайно наткнулась на информацию, что когда-то в gcc было придумано некое расширение и volatile void имело какой-то смысл. Но это было давно и ныне deprecated.
Это к вопросу о применении. А вот вопрос "что это может означать?" - интереснее. Для меня любой из приведенных примеров кода - повод для беспокойства.
Например, вот это:
int const MyFunction()
Это скорее всего кто-то перепутал с
int MyFunction() const
В-общем, это хороший повод пройтись по коммитам, найти автора и спросить "чувак, что ты хотел этим сказать?"
Категории: cpp
понедельник, октября 20, 2008
Четыре миллиарда рублей
Интересные слухи бродят среди программистов. Все уже, наверное, слышали про 4 миллиарда рублей, которые были начислены по ошибке некоему оперативнику. Который их вернул. Однако, прочитав внимательно заметки об этом удивительном происшествии, вы наверняка найдете упоминания о том, что до начисления у него на счету был "почти ноль". А четыре миллиарда - это примерно 232. Ну дальше рассказывать не надо, я думаю :-).
Категории: fun, programming
Metroid Prime 3: Corruption
Довелось мне тут поиграть в Metroid Prime 3: Corruption, это 3Д шутер выпущенный под Wii. Надо сказать, что 3Д шутер на Wii - это в принципе странная идея. Они там попытались как-то использовать возможности Wii'ных контроллеров, но получилось несколько притянуто за уши. Однако в плане программирования и графики игра сделана очень хорошо. Из платформы выжали вообще что только можно было, поэтому игра выглядит весьма достойно.
Игру лучше смотреть в движении, на YouTube есть ролик, но качество оставляет желать лучшего...
Категории: gamedev
суббота, октября 11, 2008
Блог Линуса Торвальдса
Линус Торвальдс начал вести свой блог: Linus' blog. Что приятно, блог на Блоггере.
пятница, октября 10, 2008
Про консоли
Читаю всякое про консоли, расширяю кругозор. Народ в целом единодушен - у PS3 странная архитектура, XBox360 похож на PC, а у Wii контроллеры прикольные.
PS3 к тому же еще самая загадочная платформа. У нее есть 7 периферийных процессоров (хотя но самом деле 6). Разработчикам не скучно.
Что именно я читала:
Про приставки
Заметки о DS для новичков
PS3 и Xbox 360: белые начинают и пока что выигрывают - большое подробное сравнение
Буду благодарна, если порекомендуете еще что-нибудь хорошее прочитать. В смысле не пресс-релизы, а впечатления разработчиков.
Категории: gamedev
четверг, октября 02, 2008
Приключение со строками
Злосчастный код, который похитил у меня несколько часов времени.
char c='0';
string str="Text"+c;
Что будет лежать в str? Отнюдь не "Text0" как можно было бы ожидать.
Здесь к адресу строки "Text" добавляется 48 байт. И конструктор str получает указатель на эту область памяти. По несчастному стечению обстоятельств в этой области памяти у меня была строка "RESTART". И вот с этого момента начались удивительные приключения этого RESTART'а, которые в итоге привели к обращению по нулевому указателю, причины которого мне и пришлось раскапывать.
Компиляторы, которые я смотрела - CodeWarrior и Visual Studio 2005 даже ворнинга в этом случае не дают.
Категории: cpp