Calling an undeclared function is a poor style in C (See this) and illegal in C++and so is passing arguments to a function using a declaration that doesn’t list argument types.
If we call an undeclared function in C and compile it, it works without any error. But, if we call an undeclared function in C++, it doesn’t compile and generates errors.
In the following example, the code will work fine in C,
// C Program to demonstrate calling an undeclared function #include <stdio.h> // 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); }
|
2
Time Complexity: O(1)
Auxiliary Space: O(1)
However if run the above code in C++, it won’t compile and generate an error,
// CPP Program to demonstrate calling an undeclared function #include <bits/stdc++.h> 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; }
|
Output
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(); ^
Time Complexity: O(1)
Auxiliary Space: O(1)