Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

C/C++, GetLastError() и errno()

#cpp


Я бы хотел разобраться в том, каким образом названные функции реализуют сохранение
информации о последней возникшей ошибке в текущем вызывающем потоке.

Как это реализуется?

И каким способом можно реализовать аналогичный функционал? Ну, например, предоставить
для своей библиотеки аналог GetLastError()/errno().
    


Ответы

Ответ 1



Начиная с 11 стандарта (обоих языков) можно использовать спецификатор хранения thread_local. При использовании компиляторов, которые его не поддерживают - аналогичные функции ОС, например Thread Local Storage в WinAPI. Пример использования TLS в библиотеке можно посмотреть здесь: Using Thread Local Storage in a Dynamic-Link Library

Комментариев нет:

Отправить комментарий