У меня есть dll с c-интерфейсом, функции которого будут возвращать коды ошибок, я также предоставил дополнительную функцию, которая возвращает последнюю ошибку. Это звучит разумно? может ли кто-нибудь указать мне на любые примеры, которые я могу использовать в качестве шаблона, пожалуйста?Возвращаемые коды ошибок из DLL
ответ
Я также обеспечит дополнительную функцию, которая возвращает последнюю ошибку
Это повлекло бы за собой имеющий errno
-style глобальную переменную, содержащую последнюю ошибку, не так ли? Я бы посоветовал это, так как это затруднит использование библиотеки в многопоточном приложении, если вы не используете локальное хранилище потоков. Тем не менее, если вы хотите это сделать, то хорошим примером может служить стандартная библиотека C с ее переменной errno
.
Проще и, IMHO, лучший подход - просто вернуть коды ошибок и при необходимости предоставить некоторые функции, которые работают с вашими кодами ошибок; например, вы можете захотеть иметь mylib_strerror
, чтобы преобразовать их в понятные для строки представления строк. Таким образом, использование будет выглядеть
int err = mylib_operation_that_might_fail();
if (err != 0) {
fprintf("%s\n", mylib_strerror(err));
exit(1);
}
Хорошим примером этого стиля является getaddrinfo
API, указанный в RFC 3493.
«Последняя ошибка» не является очень полезной или надежной концепцией в контексте DLL. Что делать, если DLL используется несколькими процессами или потоками?
Это также можно сделать потокобезопасным с помощью локального хранилища потоков. Тем не менее, я согласен с вами, это не очень элегантно. –
- 1. Возвращаемые значения из dll wix custom-action
- 2. Использовать коды ошибок или использовать коды ошибок
- 3. Ссылка на коды ошибок увеличения
- 4. Коды ошибок MIME/IMF?
- 5. Коды ошибок Facebook FacebookApiException?
- 6. Коды ошибок Python
- 7. HTTPDataSource коды ошибок
- 8. Пакетные файлы - коды ошибок
- 9. Коды ошибок Java
- 10. Как добавить «коды ошибок»?
- 11. Интерпретация Golang Коды ошибок
- 12. . Коды ошибок класса Socket
- 13. Коды ошибок Android MediaPlayer?
- 14. NHibernate.Exceptions.GenericADOException коды ошибок
- 15. Коды ошибок для CryptographicExceptions?
- 16. Коды ошибок BITS
- 17. Коды для исправления ошибок
- 18. Коды ошибок запуска MediaRecorder
- 19. Коды ошибок AllocConsole
- 20. ADB Коды ошибок
- 21. C++ Исходные коды ошибок
- 22. Коды ошибок Adobe Reader
- 23. Коды ошибок GCM
- 24. Коды ошибок PostgreSQL
- 25. android MediaRecorder.onInfoListener коды ошибок
- 26. Коды ошибок проверки пакетов
- 27. Идентичные коды ошибок
- 28. Коды ошибок аутентификации ServiceStack
- 29. Коды ошибок OR'd вместе
- 30. Коды ошибок LDAP
Сделать каждую экспортируемую функцию возвратом кода ошибки. –