URN Logo
UNIX Resources » Linux » China Linux Forum » CPU 与 编译器 » 2 » 这样表示一个字符串是为什么: _("字符串")
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
这样表示一个字符串是为什么: _("字符串")
 
 
 
 
 
 
 
 
Subject: 这样表示一个字符串是为什么: _("字符串")
Author: dwwwww    Posted: 2007-04-27 15:25    Length: 450 byte(s)
[Original] [Print] [Top]
log_info (_("Found %d files and subdirectories. "), ut->nr_entries);

log_info是一个宏,定义如下:
#define log_info(s, str...) {
print_log (ULOG_NORMAL, (s), ##str);
}

print_log是一个自己封装的debug函数。

问题是:
为什么要放一个下划线“_”在要传递的串前面?
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: sartpoint    Posted: 2007-04-27 17:05    Length: 24 byte(s)
[Original] [Print] [Top]
自己运行下看看结果了吗。
----
Crazy linux fans
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: MMMIX    Posted: 2007-04-27 18:07    Length: 37 byte(s)
[Original] [Print] [Top]
问过好多次的问题了。这里 _ 是一个宏。
----
天地不仁, 以万物为刍狗!
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: dwwwww    Posted: 2007-04-27 22:21    Length: 30 byte(s)
[Original] [Print] [Top]
我试过将下划线去掉,没有影响啊
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: dwwwww    Posted: 2007-04-27 22:24    Length: 34 byte(s)
[Original] [Print] [Top]
这个宏在哪定义的呢?有什么用意呢?
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: EricFisher    Posted: 2007-07-07 00:50    Length: 383 byte(s)
[Original] [Print] [Top]
>#define log_info(s, str...) {
>print_log (ULOG_NORMAL, (s), ##str);
>}
没看懂log_info的宏定义,宏定义参数里的“...”什么意思?

我知道gcc的intl.h里:
#ifndef _
# define _(msgid) gettext (msgid)
#endif

这样就可以通过gettext函数来实现输出的字符串本地化,比如中文输出。
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: lllaaa    Posted: 2007-09-25 22:46    Length: 65 byte(s)
[Original] [Print] [Top]
str...表示是可变参宏.

和printf一样参数个数可变
[Original] [Print] [Top]
Subject: Re: 这样表示一个字符串是为什么: _("字符串")
Author: KingArthur    Posted: 2007-10-25 14:32    Length: 342 byte(s)
[Original] [Print] [Top]
> 这个宏在哪定义的呢?有什么用意呢?

这应该是gettext的一个宏,用来做i18n(国际化)的。

http://www.gnu.org/software/gettext/

并请参考gettext manual, 4.4 How Marks Appear in Sources
----
What can change the nature of a man?
[Original] [Print] [Top]
« Previous thread
xscale iwmmxt补丁 交叉编译工具的问题?
CPU 与 编译器
2
Next thread »
自己写的编译器,欢迎指导。
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:47:08, cost 0.069672107696533 ms.