【发布时间】:2024-01-05 04:24:01
【问题描述】:
我对 C 语言比较陌生,在编译一个可以运行的程序后,我收到了一些编译器警告。
警告说:
main.c: In function ‘lsh_read_line’:
main.c:65:2: warning: pointer targets in passing argument 2 of ‘getline’ differ in signedness [-Wpointer-sign]
getline(&line, &bufsize, stdin);
^
char *lsh_read_line(void)
{
char *line = NULL;
ssize_t bufsize = 0;
getline(&line, &bufsize, stdin);
return line;
}
我看到的大多数解决方案都建议在分配缓冲区空间时使用指针,但我只是让 getline 自己分配内存,所以我不知道如何纠正这个问题。
另外,我认为这个警告是相关的,但我不知道它的含义或如何纠正它:
In file included from main.c:4:0:
/usr/include/stdio.h:678:20: note: expected ‘size_t * __restrict__’ but argument is of type ‘ssize_t *’
extern _IO_ssize_t getline (char **__restrict __lineptr,
^
【问题讨论】:
-
有什么理由不使用正确的类型(size_t)吗?
-
赞成尝试解决警告,即使程序“运行良好”。
标签: c compiler-warnings