Función que llama no declarado en C y C ++

En este artículo, vamos a ver lo que sucede cuando que llamamos una función no declarada en C y C ++?

En C:

continuación es el ejemplo en C,

#include <stdio.h>
// Argument list is not mentioned
void func();
int main()
{
//it compiles in C, but this is not
//something we should do
func(10);
return 0;
}
void func(int x)
{
printf("value: %dn", x);
}

salida:

value: 10

El por encima de uno compila correctamente. Pero el siguiente uno no se compila en C.

#include <stdio.h>
// Argument list is not mentioned
void func();
int main()
{
//it won't compile
func('a');
return 0;
}
void func(char x)
{
printf("value: %cn", x);
}

salida:

main.c:14:6: error: conflicting types for ‘func’
void func(char x)
^~~~
main.c:15:1: note: an argument type that has a default promotion can’t match an empty parameter name list declaration
{
^
main.c:4:6: note: previous declaration of ‘func’ was here
void func();
^~~~

En C ++:

continuación es el ejemplo en C ++,

#include <bits/stdc++.h>
using namespace std;
// Argument list is not mentioned
void func();
int main()
{
//it won’t compile
func(10);
return 0;
}
void func(int x)
{
cout << "value: n" << x << endl;
}

salida:

main.cpp: In function ‘int main()’:
main.cpp:10:12: error: too many arguments to function ‘void func()’
func(10);
^
main.cpp:5:6: note: declared here
void func();
^~~~


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *