编译时不包含头文件

时间:2014-01-08 08:26:18

标签: c compilation compiler-errors

在特定的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。但是可以在不添加头文件的情况下调用函数吗?

1 个答案:

答案 0 :(得分:2)

你可以,但我不建议。您已经安排了一些事情来强制编译器利用隐式声明

int main()
{
    foo(2); /* The compiler emits this by implicit declaration. */       
    return 0;
}

int foo(int x)
{
    return x;
}

在明确的情况下,extern告诉编译器期望foo来自不同的编译单元。

要做的标准事情是将foo的原型放在标题中并包含它。