我是C新手,特别是编写静态库,我从库中得到奇怪的行为。静态库不需要头文件?
我写了一个叫做cde的小静态库。我用gcc的不同部分编译成的.o-文件,然后我用AR来把它们放在一起到.A文件现在
,当我想测试我的图书馆我做了以下内容:
gcc test.c -L../bin -lcde -lelf
libcde.a是我的库,位于../bin。 libelf.a是我需要的库(我不知道如何将它直接放到我自己的库中)。
问题是我可以调用我的库的每个函数而不需要必须包含我的库的头文件。这怎么可能?在编译时这些文件不应该被链接所以编译器应该不知道什么功能都可用我的库里面...
当我运行它通过以下方式,
gcc -L../bin -lcde -lelf test.c
的文件test.c无法找到我的头文件中定义的任何函数,即使我已经包含了它。
我认为我在这里做了一些根本性的错误,但我真的找不到什么。