隐式声明函数(静态库)

时间:2015-12-06 04:47:19

标签: c

我的静态库是使用我拥有的所有功能编译的,但是当我使用它时,我收到了错误:

warning: implicit declaration of function 'ft_putnbr' is invalid in C99 [-Wimplicit-function-declaration]

我的源代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int     main(void)
{
     int fd;

     fd = open("42", O_CREAT | O_WRONLY, S_IRUSR, S_IWUSR);
     ft_putnbr(fd);
     return (0);
}

我正在使用此选项进行编译:

gcc main.c -L. -lft

我的静态库已命名并包含ft_putnbr函数:libft.a
但是当我写道:include&#34; libft.h&#34;它正在工作中 如果没有包含&#34; libft.h&#34;它为什么不工作? ?

1 个答案:

答案 0 :(得分:0)

因为静态库仅在链接阶段由链接器读取(并且静态库无论如何都不包含其函数签名)。编译器需要知道这个函数在编译阶段是什么。因此,您需要包含提供函数签名的头文件。