gpt4 book ai didi

c - _ ("write error") 是什么意思?

转载 作者:行者123 更新时间:2023-12-02 08:12:02 26 4
gpt4 key购买 nike

在 Debian 8 的源代码/source/procps-3.3.9/lib/fileutils.c 第 38 行是: char const *write_error = _("写入错误");

我对 _("write error") 部分感到困惑。 Google 显示了变量命名约定或库保留名称的结果,但没有关于 _ 何时位于 = 的右侧和 () 引号字符串之前。

我也将这一行放入一个最简单的测试程序中作为唯一有用的行然后编译失败说:

test.c:5:20: warning: implicit declaration of function ‘_’ [-Wimplicit-function-declaration]
char const *str = _("test string");
^

test.c:5:20: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
/tmp/cczQpqTh.o: In function `main':
test.c:(.text+0x15): undefined reference to `_'
collect2: error: ld returned 1 exit status

有谁知道_("")格式是什么意思?

最佳答案

这是使用 GNU gettext 标记要翻译的字符串的标准方法,一个免费的软件翻译工具。

The _() macro由外部工具找到,该工具提取文本以使其可翻译,以及(在运行时)进行查找以将文字替换为必要的翻译。

名字_没有什么特别的,它只是一个非常短但完全有效的 C 标识符。以下划线开头公共(public)符号可能有点不确定,我现在不确定。

你得到的错误是因为你的测试程序很可能没有包含 <libintl.h> header (当然是 gettext 的一部分)它声明了这个宏。因此,如预期的那样,您会收到正常的“ undefined reference ”错误。

关于c - _ ("write error") 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45811623/

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