【发布时间】:2015-11-27 03:39:12
【问题描述】:
(虽然这个问题一开始可能看起来特定于 GLib 或错误处理,但您实际上并不需要了解任何有关这些内容的信息来回答我的问题。)
我正在尝试使用 GLib 中的 g_set_error 来正确处理我的删除文件错误。我对 C 语言不是特别好,但我的直觉告诉我,执行以下操作可能没问题(第 3 行):
void file_delete(const gchar *name) {
if (remove(name) != 0) {
gchar *errmsg = ("Error deleting file %s: %s.", name, strerror(errno));
g_set_error(NULL, SDS_ERROR, 0, errmsg);
}
else {
//log file <name> deleted
}
}
这样创建一个新字符串可以吗?或者我应该将errmsg 拆分为 3 个单独的字符串并将它们连接起来?还是其他方法?
【问题讨论】:
-
C++ != C。您似乎在谈论后者。标签已编辑。
-
你在哪里读到过这样的语法
gchar * errmsg = ("...."...)?这不是带参数的函数调用。 -
@CommanderCody 你需要像
sprintf()这样的东西。 -
既然你已经在用GLib了,不如用他们的字符串实用方法,比如
g_strdup_printf。 -
您应该注意
strerror返回的字符串 - 尽管它通常是静态字符串 -strerror产生的错误字符串可能特定于每个系统和库实现。也可以考虑g_strerror
标签: c string error-handling glib