gpt4 book ai didi

c - 为什么我需要 C 头文件?

转载 作者:太空狗 更新时间:2023-10-29 15:11:33 25 4
gpt4 key购买 nike

我承认这是一个愚蠢的问题。代码会更好地解释它。得到这些文件:

你好.c:

#include <stdio.h>

void hello(char * s)
{
printf("hello, %s\n", s);
}

主.c:

int main()
{
hello("world!");
return 0;
}

生成文件:

test : main.o hello.o
gcc -o test main.o hello.o

main.o : main.c
gcc -c main.c

hello.o : hello.c
gcc -c hello.c

.PHONY : clean
clean :
-rm test
-rm main.o
-rm hello.o

我只需“制作”和“./测试”它就可以了。难道我不需要在 main.c 中包含类似 hello.h 的内容,以便编译器知道函数原型(prototype)吗?

我什至没有在任何地方包含 hello.c,它就可以正常工作! main.c 怎么知道 hello 函数?

如果可行,我什么时候需要 .h 文件?我是 C 编程的新手,但我认为这个概念很容易掌握,现在我完全糊涂了。

最佳答案

如果您使用 -Wall 标志(并且应该始终使用它,以及 -Werror -Wextra),那么您d 收到以下消息:

main.c: In function 'main':
main.c:3: warning: implicit declaration of function 'hello'

并且编译器有效地“猜测”要做什么,这在许多情况下会导致灾难。

正确使用头文件可以避免这种警告。

关于c - 为什么我需要 C 头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14310341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com