我们可以在 C++ 中调用未声明的函数吗?
调用未声明的函数在 C 中是一种糟糕的风格(参见 this)并且在 C++ 中是非法的,使用未列出参数类型的声明将参数传递给函数也是如此。
如果我们在 C 中调用一个未声明的函数并对其进行编译,它就可以正常工作而不会出现任何错误。但是,如果我们在 C++ 中调用未声明的函数,它不会编译并产生错误。
在以下示例中,代码将在 C 中正常工作,
C
// C Program to demonstrate calling an undeclared function
#include
// Argument list is not mentioned
void f();
// Driver Code
int main()
{
// This is considered as poor style in C, but invalid in
// C++
f(2);
getchar();
return 0;
}
void f(int x) { printf("%d", x); }
C++
// CPP Program to demonstrate calling an undeclared function
#include
using namespace std;
// Argument list is not mentioned
void f();
// Driver Code
int main()
{
// This is considered as poor style in C, but invalid in
// C++
f(2);
getchar();
return 0;
}
void f(int x) { cout << x << endl; }
输出
2
但是,如果在 C++ 中运行上述代码,它不会编译并产生错误,
C++
// CPP Program to demonstrate calling an undeclared function
#include
using namespace std;
// Argument list is not mentioned
void f();
// Driver Code
int main()
{
// This is considered as poor style in C, but invalid in
// C++
f(2);
getchar();
return 0;
}
void f(int x) { cout << x << endl; }
输出
prog.cpp: In function ‘int main()’:
prog.cpp:13:8: error: too many arguments to function ‘void f()’
f(2);
^
prog.cpp:6:6: note: declared here
void f();
^