📅  最后修改于: 2023-12-03 15:25:42.157000             🧑  作者: Mango
在C++中,函数必须要声明后才能使用。声明告诉编译器函数的名称、参数和返回类型等信息。这使得编译器能够验证函数的使用是否正确。因此,通常情况下不应该在C++中调用未声明的函数。
示例代码:
int main() {
foo(); // Error: 'foo' was not declared in this scope
return 0;
}
上面的代码会报错,因为foo
函数在使用之前没有进行声明。
但是,有一种情况下可以在C++中调用未声明的函数,即如果这个函数已经在其他文件中进行了定义,并且链接器可以将这个函数的定义和调用链接起来。这种情况通常发生在相互依赖的模块之间。
示例代码:
// a.cpp
int foo();
int main() {
foo(); // okay, 'foo' will be resolved by the linker
return 0;
}
// b.cpp
int foo() {
return 42;
}
在上面的代码中,a.cpp
文件中声明了foo
函数,但是它的定义在b.cpp
文件中。如果我们编译并链接这两个文件,程序就可以成功运行,因为链接器将foo
的定义和main
函数的调用链接起来。
总之,正常情况下不应该在C++中调用未声明的函数,但是如果这个函数的定义已经在其他文件中进行了定义,可以通过链接器将它们链接起来。