【发布时间】:2021-06-16 13:05:56
【问题描述】:
我试图在我的代码中实现 rl_replace_line() 但是当我尝试像这样编译它时:
gcc -lreadline test.c -o test
我收到此错误消息:
error: implicit declaration of function 'rl_replace_line' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
但是我认为我使用了好的头文件? 这是我的代码:
# include <stdio.h>
# include <readline/readline.h>
# include <readline/history.h>
# include <unistd.h>
# include <stdlib.h>
char *get_line()
{
char *line;
line = NULL;
if (line)
{
free(line);
line = NULL;
}
line = readline("Minishell>");
if (line)
add_history(line);
return (line);
}
void sig_handler(int signum)
{
if (signum == SIGINT)
{
printf("\n");
rl_on_new_line();
rl_replace_line("", 0);
rl_redisplay();
}
}
int main(void)
{
char *line;
signal(SIGINT, sig_handler);
line = get_line();
printf("%s\n", line);
}
我不明白为什么它不起作用,希望大家帮忙谢谢!
【问题讨论】:
-
这是唯一导致错误的函数吗?该函数是否在您包含的 readline 相关标头中声明?可能你安装的 readline 版本没有这个功能。
-
这些是我找到的唯一 readline 标题,我会尝试看看是否是版本问题
-
这些头文件是否包含该函数的声明?
-
试试
gcc test.c -o test -lreadline看看它是否有所作为。链接器选项应该放在编译器选项之后。 -
rl_replace_line函数是在 2002 年发布的 Readline-4.3 中添加的。
标签: c gcc compiler-errors readline