c - 错误:函数“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
推荐阅读
- tls1.2 - javax.net.ssl.SSLException:在握手期间收到 close_notify
- python - 合并numpy矩阵中的列
- python - 在 python 日志中为每个会话添加会话 ID 或某些唯一 ID
- excel - 将公式复制到整个列表
- javascript - 具有文字字符串属性的打字稿对象文字
- flutter - 在径向堆栈中排列图像,并手动操作重叠
- reactjs - 重新渲染行为不正常
- .htaccess - 本地主机和生产的 Htaccess 分开
- php - 每次尝试访问管理仪表板页面时,我都会被重定向到登录页面
- excel - 如果单元格不为空白,并且与相邻单元格匹配,则计数