📜  我们可以在 C++ 中调用未声明的函数吗?

📅  最后修改于: 2022-05-13 01:54:22.357000             🧑  作者: Mango

我们可以在 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();
     ^