У меня включены чуть ли не все возможные ворнинги, но почему-то конпелятор всё равно не поругался, что я применяю && к числам, а не булям.
У меня включены чуть ли не все возможные ворнинги, но почему-то конпелятор всё равно не поругался, что я применяю && к числам, а не булям.
while ((p = *ap++) != NULL) {
x = x || func();
сишечка слишком ленивая, и, если x уже равен true, то func тупо не вычисляется.
я не помю, если я перепишу это как
x = func() || x;
я могу быть уверенным, что func() гарантированно выполнится всегда?
Так у меня в двух местах, CMakeLists.txt абсолютно одинаковые.
Но только в первом случае линкуется моя функция из теста, во втором — функция из библиотеки.
Нельзя ли линкеру как-то явно подсказать, какую функцию брать?
autohell — древнее говно,
cmake — лютое говно,
meson — питоноговно.
Для сборки ядра пришлось костылить какой-то самодельный ужас.
Почему нет нормальной системы сборки? неужели это настолько сложно сделать нормальную?
Но мне встретилась программа, которая этот указатель как-то использует. Переписать её, что ли.
С одной стороны, тут есть типичные для сишечки дыры, налезающие одна на другую, и есть баг.
С другой стороны, типичная обувь нищесишечника, у которого едва хватает денег на новые кеды.
uint8_t a;
uint8_t b;
a += b;
Приходится писать так, чтобы конпелятор заткнулся:
a = (uint8_t)(a + b)
Вообще, раз уж есть специальный оператор +=, он бы мог и автоматически приводиться , куда надо.
Как оно туда попало? не понятно.
Пока что моя гипотеза, регистр сохранялся в стеке, и пока он там лежал, я где-то в этот стек поднасрал, и из стека он вылез уже порченый. Но как я мог насрать столь филигранно, чтобы испортить только старшую часть этого регистра? Я не знаю.
Нужно было запустить программу в системе со старой glibc.
Пересобрать программу с этой версией glibc возможности не было.
Запустил objdump -T посмотрел, какие функции требуют новой glibc, закомментировал их вызов, пересобрал — заработало.
История показала, кто прав: говноflashplayer давно выкинут на свалку, а GNU C Library по-прежнему одна из эталонных реализаций.
Дреппер прав.
Почему не написать явно: int32_t? чтобы было проще портировать на 16-битные платформы?
Я совсем ничего не умею делать, поэтому работаю инженером-программистом. Вот тебе сишечка, садись, разрабатывай. И это почему-то прокатывает! Мне даже деньги за это платят, небольшие, но получается даже откладывать немного.
Вчера видел объявление: Мострансавто приглашает водителей автобусов 35000-56800 в месяц. Человеку, который умеет по крайней мере водить автобус! человек, который будет ответственным за чужие жизни! Как вообще такое возможно?..