@bitfield

Тег C++ в блоге bitfield

bitfield

I agree that it's a terrible way of doing things, but it's cmake we are talking about.

bitfield
    unsigned long  f_bsize;    /* file system block size */
    unsigned long  f_frsize;   /* fragment size */
    fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */

Линус, ты пьян, иди домой.

bitfield

bitfield

у нас было два пакетика травы ...

I've applied libFuzzer to regexp library and found 5 heap-buffer-overflows, stack overflow, assert failure, use of uninitialized data, SIGSEGV, infinite loop, undefined shift, invalid enum value and a bunch of memory leaks

(c) https://svn.boost.org/trac/boost/ticket/12818

bitfield

Strictly speaking, it is an error to say size_t without using namespace std; or using std::size_t;. However, most compilers allow it, and the Standard specifically allows them to allow it (§D.5/3)

bitfield

Опыт работы
2009 - настоящее время -- "..." (инженер-программист)
...
IDE: ..., Borland C++ 3.1, ...

bitfield

из последнего тестового

T * temp = ...
if (temp == 0)
    return 0;
else
    return temp;
}
bitfield

Boost и стандарт дал им chrono::duration и типы nanoseconds/milliseconds/seconds.

Нет, мы запилим функцию

uint64_t Tools::Time() { return chrono::system_clock::now().time_since_epoch().count(); }

и будем везде юзать uint64_t для времени.

А поскольку на винде и посих резолюшен у system_clock разный (100 нс и 1 нс, соответсвенно), в разных частях проекта появляется

auto millesecs = Tools::Time() / 1000 / 1000;
...
auto secs = Tools::Time() / 10000000;
bitfield
 enum Status { offline, ..., online };
 Status GetStatus() const;

-  if (Status() == online) {
+  if (GetStatus() == online) {

Плохо быть крестоблядью под MSVC. По возможности избегайте этого.

bitfield

"Рефакторили, рефакторили, да не вырефакторили."

Поменяли тип переменной, а в одном ветке забыли вычитать -- в результате получили взрывающий мозг код

std::string val = "puk srenk";
...
val = rand() % 1000;

// случайный инт имплицитно конвертится в чар, который и приваивается строке.
шланг ворнинг дает только при -Wconversion, который ругается на assert(!"shit happend");
На

assert(!*"shit happend");
assert(false && "shit");

не ругается, но первое непривычно читать, а второе долго писать.

bitfield

В резюме кандидата

цель: Antigravity.

Делаю фидбек на тестовое -- куча минусов и ни одного плюса.
"Ах ты гравитация, бессердечная ты сука" (с)

bitfield

Нашли прекрасную багу у сотрудника, который в отпуске.

В заголовочном файле есть константа

#define BUFSIZE 8128

Приходит пакет размером 3 КБ и ... обрабатывается неверно.
Читаем код функции: буфер размером BUFSIZ, в который копируется пакет.
Стоп! Что такое BUFSIZ? Откуда оно берется?
F12 (Go to Definition) и попадаем в stdio.h:

#define BUFSIZ 512

PS. Осталось еще узнать, почему 8128, а не 8*1024=8192.

bitfield

Чтение отчетов с заседаний комитета стандартизации C++ напоминает чтение Википедии.

Начав читать статью "Собор Парижской Богоматери^W^W^W Concepts", внезапно обнаруживаешь, что читаешь статью "Бегемот^W Ranges".

ЗЫ. Интересно, intended ли pun в названии Trip Report?

bitfield
static inline constexpr const char *kFoo = "foo bar";
bitfield

http://blog.mattbierner.com...per-template-tetris/

Тетрис и змейка в компайлтайм на крестошаблонах.

bitfield

из очередного тестового задания

 void putinbeg(int a);
 void putinend(int a);
bitfield

У нас было 3 бинарника, 75 папок с исходниками, 5 плюсовых библиотек, пол-инсталла boost и целое множество ресурсов всех сортов и расцветок, а также MagicalRecord, Lumberjack и ReactiveCocoa в Podfile. Не то, чтобы это был необходимый запас для программы. Но если уже начал собирать код, становится трудно остановиться. Единственное, что вызывало у меня опасение -- это ReactiveCocoa. Нет ничего более беспомощного, безответственного и испорченного, чем функциональное реактивное программирование в Objective-C. Я знал, что рано или поздно мы перейдем и на эту дрянь.

bitfield

Увидел на rsdn "прекрасное":
класс CMoney с полем double m_Amount и оператором приведения к LPCTSTR (строковых полей в классе нет, если что)

bitfield

ошибка конь-фелляции

bitfield

ой какое мимими!
Вижуал Студия со спокойной душой скастила false в std::string

std::string SomeFunction() {
  // ...
  if (SomeCondition())
    return false;
  // ...
  return "Happy";
}

if занес сотрудник копипастой из другой функции. Увидел, когда пересобирал на маке шлангом.

⬆

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.