免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1997 | 回复: 8
打印 上一主题 下一主题

函数调用的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-09 16:57 |只看该作者 |倒序浏览
最近阅读nano源码,看到这么一个函数
  1. void die(const char *msg, ...)
  2. {
  3.     va_list ap;         /*声明一个va_list类型变量*/

  4.     endwin();

  5.     /* Restore the old terminal settings. */
  6.     tcsetattr(0, TCSANOW, &oldterm);

  7.     va_start(ap, msg);       /*初始化ap*/
  8.     vfprintf(stderr, msg, ap);            /* 和fprintf()函数功能相同,只不过是...变成了ap,这里不是直接来遍历未知变量,而是使用了vfprintf()函数来遍历*/
  9.     va_end(ap);                          /*完成,ap变成未定义的了*/

  10.     /* Save the current file buffer if it's been modified. */
  11.     if (openfile && openfile->modified) {
  12.         /* If we've partitioned the filestruct, unpartition it now. */
  13.         if (filepart != NULL)
  14.             unpartition_filestruct(&filepart);

  15.         die_save_file(openfile->filename
  16. #ifndef NANO_TINY
  17.                 , openfile->current_stat
  18. #endif
  19.                 );
  20.     }

  21. #ifdef ENABLE_MULTIBUFFER
  22.     /* Save all of the other modified file buffers, if any. */
  23.     if (openfile != NULL) {
  24.         openfilestruct *tmp = openfile;

  25.         while (tmp != openfile->next) {
  26.             openfile = openfile->next;

  27.             /* Save the current file buffer if it's been modified. */
  28.             if (openfile->modified)
  29.                 die_save_file(openfile->filename
  30. #ifndef NANO_TINY
  31.                         , openfile->current_stat
  32. #endif
  33.                         );
  34.         }
  35.     }
  36. #endif

  37.     /* Get out. */
  38.     exit(1);
  39. }
复制代码
看到在其他函数里调用这个函数的时候,这么调用的:
  1. die(_("Window size is too small for nano...\n"));
复制代码
这个是什么意思?
funName(_("  "))这个怎么理解阿?撇开函数的具体功能,对这个函数调用的方式很是不解。

论坛徽章:
0
2 [报告]
发表于 2011-03-09 17:09 |只看该作者
#define _(xxx)  "草泥马"
懂了吗

论坛徽章:
0
3 [报告]
发表于 2011-03-09 17:11 |只看该作者
表示宽字符吧,不知道对不对

论坛徽章:
0
4 [报告]
发表于 2011-03-09 17:22 |只看该作者
回复 2# mcemil


    懂了

#define _(a)  a

谢谢~

论坛徽章:
0
5 [报告]
发表于 2011-03-09 19:21 |只看该作者
2L太搞笑了

论坛徽章:
0
6 [报告]
发表于 2011-03-09 22:47 |只看该作者
进一步看了一下:

$ grep \#define\ _  *
nano.h:#define _XOPEN_SOURCE_EXTENDED 1
nano.h:#define _(string) gettext(string)
nano.h:#define _(string) (string)

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
7 [报告]
发表于 2011-03-09 23:50 |只看该作者
你这代码想必是Windows下的,那么理论上讲是用VC看了
VC难道没有转到定义么??

论坛徽章:
0
8 [报告]
发表于 2011-03-10 16:22 |只看该作者
{:3_185:} 2L 搞笑过了哈 呵呵

论坛徽章:
0
9 [报告]
发表于 2011-03-10 18:56 |只看该作者
回复 7# egmkang

猜错了,这是Linux下的代码, nano编辑器,难道没有听说过?pico呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP