在特定的C项目中,文件说file1.c使用函数说FUNCTION2()。 FUNCTION2()在file2.c中声明。 file1.h
中有一个FUNCTION2()的extern声明file1.c仅添加file1.h。 在file1.h中,未添加file2.c / file2.h。编译仍然是成功的,功能正在发挥作用。
在项目的编译列表中,首先编译file2.c / file2.h。但是可以在不添加头文件的情况下调用函数吗?
答案 0 :(得分:2)
你可以,但我不建议。您已经安排了一些事情来强制编译器利用隐式声明:
int main()
{
foo(2); /* The compiler emits this by implicit declaration. */
return 0;
}
int foo(int x)
{
return x;
}
在明确的情况下,extern
告诉编译器期望foo
来自不同的编译单元。
要做的标准事情是将foo
的原型放在标题中并包含它。