我终于让自己看了一些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”之类的东西,还是全新的东西?我还必须承认,我不知道用什么词来搜索这样的东西。
希望你能帮助我。
发布于 2012-05-13 01:59:06
这是libintl使用的约定。gettext,用于可翻译的字符串。运行时,gettext函数( _的别名)将返回原始或转换后的字符串,具体取决于区域设置和字符串的可用性。
发布于 2012-05-13 02:18:26
_是一个经常与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,许多程序使用宏将_(string)设置为gettext(string)的别名。
发布于 2012-05-13 01:57:29
当然,函数名可以包含_,并且_可以作为函数名的开头。因此,可以简单地将函数命名为_。
所发生的一切就是一个#define或一个实函数被称为_。
https://stackoverflow.com/questions/10566109
复制相似问题