TGViewer
Библиотека C/C++ разработчика | cpp, boost, qt Библиотека C/C++ разработчика | cpp, boost, qt @cppproglib · 16.9K subscribers
Post #6792 1.73K
🥳 errno: привет из 1970-х

Прежде чем хвалить C++23, разберёмся с тем, что встречается в каждом проекте. errno — индикатор ошибки из мира C, и его всё ещё использует унаследованная C-часть стандартной библиотеки (<cmath>, семейство strto*, часть C-I/O).

Главная ловушка: errno не сбрасывается при успехе. Проверять его «после» наугад бессмысленно — нужно обнулить до вызова.

#include <cerrno>
#include <cstdlib>

errno = 0; // 1. сбросить
char* end = nullptr;
long v = std::strtol(str, &end, 10);
if (errno == ERANGE) return overflow(); // 2. проверить переполнение
if (end == str) return empty(); // 3. ничего не распарсилось
if (*end != '\0') return trailing(); // 4. мусор в хвосте: "123abc"


🩹 Типичные ошибки:
• забыли errno = 0 перед вызовом
• смотрят только на результат, игнорируя ERANGE
• думают, что errno общий на все потоки (с C++11 он thread-local)


💡 Превратить код в текст: std::strerror(errno).

❗️ В работе с C API errno неизбежен, но в своём коде его стоит сразу заворачивать в std::error_code.


📍Навигация: ВакансииЗадачи Собесы

Библиотека C/C++ разработчика

#константная_правильность
  • 👍 4
  • 🔥 1
More from @cppproglib
  1. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 18, 2026Сегодня последний день регистрации на КосмоХакатон! 18–20 сентября, Петербург, Красноярск…
  3. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  6. Sep 13, 2026🤩 Inline static в классах — забудь про .cpp Сколько раз ты забывал добавить определение s…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →