【发布时间】:2010-11-01 07:24:16
【问题描述】:
所以,我正在尝试使用 readline 将一些默认文本填充到用户输入中,但无法让它在 OSX 10.5 上运行:
// rl_insert_text_ex.c
// gcc -o rl_insert_text_ex rl_insert_text_ex.c -lreadline
#include <stdio.h>
#include <readline/readline.h>
int my_startup_hook(void) {
return rl_insert_text("ponycorns");
}
int main(int argc, char *argv[]) {
char *line;
rl_startup_hook = (Function*) my_startup_hook;
line = readline("What's your favorite mythical animal? ");
if (NULL == line || '\0' == *line) {
printf("Nothing given... :(\n");
}
else {
printf("That's funny, I love %s too!\n", line);
}
return 0;
}
此代码甚至无法在 10.4 上编译(在 10.4 上没有对 _rl_insert_text 的定义,这有点令人遗憾),但在 10.5 上可以编译。但是,rl_insert_text()'d 文本永远不会显示在屏幕上,也不会作为用户输入返回。正在使用回调,rl_insert_text() 返回正确的值,(谢谢printf),所以我不确定这里发生了什么。
我查了/usr/include/readline/readline.h,rl_insert_text()在下面:
/* supported functions */
令人困惑的是:
/*
* The following is not implemented
*/
我是 SOL,还是我做错了?
【问题讨论】:
-
为什么这被标记为红宝石?代码看起来像 C 代码。