gpt4 book ai didi

c++ - 共享库中的错误处理策略 - C

转载 作者:可可西里 更新时间:2023-11-01 15:37:12 25 4
gpt4 key购买 nike

我正在使用 C 编写一个跨平台共享库(linux 中的 .so 和 windows 中的 .dll)。当前出现错误时,库函数返回正确的错误代码并将错误信息写入 stderr。库函数还会向 stdout 发出一些信息和调试消息。这适用于基于控制台的客户端。

现在这个库将有使用使用 C++ 和 wxWidgets 编程的 GUI 的客户端程序。我想知道处理错误和通知错误的最佳做法是什么? UI 应用程序能否在所有平台上访问来自 stdoutstderr 的数据?

我考虑的另一种方法是库初始化函数初始化一个具有函数指针的结构。库中的所有函数都将采用此结构的实例并调用函数指针。这样客户端可以选择打印消息的位置。

我想知道解决这个问题的明显方法是什么?任何帮助都会很棒。

最佳答案

最佳实践(恕我直言)是图书馆不要将任何内容打印到 stderr(或 stdout),因为它们甚至可能不存在。除了 GUI 情况之外,您还有没有“控制台”的服务器应用程序的用例,并且可能希望使用类似 syslog() 的函数来记录错误。

一些不直接打印错误信息的处理方法:

  • 返回一个数字错误代码,并提供将其转换为字符串的函数

  • 返回一个包含附加信息的结构/对象错误代码

  • 在“ session ”对象上提供一个函数,该函数返回关于最后一个错误的信息

  • 允许调用者注册在发生错误时调用的回调

“不要从库写入 stderr”规则的一个异常(exception)情况是,如果库具有允许将详细信息记录到 stderr 的“ Debug模式”参数。

关于c++ - 共享库中的错误处理策略 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com