【发布时间】:2014-08-11 09:50:39
【问题描述】:
当我尝试使用静态库编译程序时遇到问题。
我用gcc -c ft_putstr.c 创建了我的.c 文件的目标文件。然后我执行ar -rcs libft.a ft_putstr.o 然后我做gcc main.c -L. -lft 我已经
警告:函数“ft_putstr”的隐式声明在 C99。
二进制文件已创建,但我不希望出现此警告,即使它是这样工作的。
如果我在 GCC 上有 -std="c89" 标志,它就可以工作,但我有你使用 C99。
这是我的主要内容:
int main(void)
{
ft_putstr("Bonjour");
return (0);
}
这是我的 ft_putstr.c:
#include <unistd.h>
void ft_putstr(char *str)
{
(*str) ? write(1, str, 1), ft_putstr(str + 1) : 0;
}
【问题讨论】:
-
您是否从
main.c导入ft_putstr.h?该标头是否定义了功能? -
不,我不导入它,因为我看过一个视频(由我的学校提供),它使程序在没有任何 .h 的情况下工作。我已经尝试过使用 .h 并且可以。
-
问题是
main()看不到。把它放在一个头文件中并用main()将它包含在文件中 -
如果不声明
ft_putstr,你总是会得到一个隐含的声明警告。见鬼,如果你愿意,你可以在 main.c 中声明它(但请不要这样做;那太愚蠢了)。 -
我觉得比你的水平比我的高很多所以我会添加一个头文件,这是我现在认为的更好的选择。非常感谢您的帮助,如果我不愉快,我们深表歉意。它比我做的时间超过 2 小时。
标签: c gcc static-libraries compiler-warnings unix-ar