fputs(_(“”))下划线代表什么?

时间:2012-05-12 17:53:24

标签: c

我终于看到了一些linux代码。我现在正在寻找“ls.c”。

在底部的“usage()”函数中,我发现了很多这些陈述:

  fputs (_("\
  List information about the FILEs (the current directory by default).\n\
  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n\
  \n\
  "), stdout);

_(“”)是什么意思?它是L“string”或_T“string”还是全新的东西?我还必须承认我不知道用什么词来搜索这样的东西。

希望你能帮助我。

3 个答案:

答案 0 :(得分:10)

它是libintl a.k.a. gettext用于可翻译字符串的约定。运行时,gettext函数(_别名)将返回原始字符串或翻译字符串,具体取决于区域设置和所述字符串的可用性。

答案 1 :(得分:4)

_是一个经常与the GNU gettext package一起使用的宏。

GNU gettext是一个包:

  • 获取供人阅读的消息字符串列表,以及将这些字符串翻译成其他语言,并将它们编译成数据库;
  • 提供了一个名为gettext()的例程,用于查找该数据库中的消息字符串,并将该消息的翻译返回到特定语言。

如果某个程序想要使用用户在环境变量中选择的语言打印消息并通过setlocale()调用来接收,则通常会执行以下操作:

fprintf(stderr, gettext("I cannot open the file named %s\n"), filename);

gettext()会在数据库中查找字符串"I cannot find the file named %s\n"的相应翻译并返回已翻译的字符串。

然而,这有点尴尬; as the documentation for GNU gettext notes,许多程序使用宏只使_( 字符串 )成为gettext( 字符串 {的别名{1}}。

答案 2 :(得分:1)

函数名称当然可以包含__可以开始函数名称。因此,可以简单地命名一个函数_

所有这一切都是#define或真实函数被称为_