微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:函数“rl_replace_line”的隐式声明在 C99 中无效 [-Werror,-Wimplicit-function-declaration]

如何解决错误:函数“rl_replace_line”的隐式声明在 C99 中无效 [-Werror,-Wimplicit-function-declaration]

我正在尝试在我的代码中实现 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);
}

我不明白为什么它不起作用,希望你们能帮忙谢谢!

解决方法

我设法通过包含正确的路径来解决我的问题:

-L .brew/opt/readline/lib-I .brew/opt/readline/include

现在我像这样编译并且它正在工作:

gcc test.c -o test -lreadline -L .brew/opt/readline/lib -I .brew/opt/readline/include

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。