¿Cuál es el propósito de un prototipo de función?

El prototipo de función tiene los siguientes propósitos: 
1) Indica el tipo de retorno de los datos que devolverá la función. 
2) Indica el número de argumentos pasados ​​a la función. 
3) Indica los tipos de datos de cada uno de los argumentos pasados. 
4) También indica el orden en que se pasan los argumentos a la función.
Por lo tanto, esencialmente, el prototipo de función especifica el entrelazado de entrada/salida de la función, es decir, qué dar a la función y qué esperar de la función.
El prototipo de una función también se llama la firma de la función.
¿Qué pasa si uno no especifica el prototipo de función?  
La salida de los siguientes tipos de programas generalmente se solicita en muchos lugares. 
 

c

int main()
{
   foo();
   getchar();
   return 0;
}
void foo()
{
   printf("foo called");
}

Si no se especifica el prototipo de la función, el comportamiento es específico del estándar C (ya sea C90 o C99) que implementan los compiladores. Hasta el estándar C90, los compiladores de C asumían el tipo de retorno del prototipo de función omitida como int. Y esta suposición en el lado del compilador puede conducir a un comportamiento del programa no especificado.
El estándar C99 posterior especificó que los compiladores ya no pueden asumir el tipo de retorno como int. Por lo tanto, C99 se volvió más restringido en la verificación de tipos de prototipos de funciones. Pero para hacer que el estándar C99 sea compatible con versiones anteriores, en la práctica, los compiladores lanzan la advertencia que dice que el tipo de retorno se asume como int. Pero siguen adelante con la compilación. Por lo tanto, se convierte en responsabilidad de los programadores asegurarse de que el prototipo de función asumido y el tipo de función real coincidan.
Para evitar todas estas especificaciones de implementación de los estándares C, es mejor tener un prototipo de función.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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