Como se dijo en @ Krishnabhadra, todas las respuestas anteriores de otros usuarios tienen una interpretación correcta, y solo quiero hacer un análisis más detallado de algunos puntos.
En el Old-C como en ANSI-C, el " parámetro formal sin tipo ", tome la dimensión de su registro de trabajo o capacidad de profundidad de instrucción (registros sombra o ciclo acumulativo de instrucción), en una MPU de 8 bits, será un int16, en un 16 bits MPU y así será un int16 y así sucesivamente, en el caso de arquitecturas de 64 bits pueden optar por compilar opciones como: -m32.
Aunque parezca una implementación más simple a alto nivel, para pasar múltiples parámetros, el trabajo del programador en el paso de tipo de datos de control dimencion, se vuelve más exigente.
En otros casos, para algunas arquitecturas de microprocesadores, los compiladores ANSI personalizados, aprovecharon algunas de estas características antiguas para optimizar el uso del código, forzando la ubicación de estos "parámetros formales sin tipo" para trabajar dentro o fuera del registro de trabajo, hoy usted obtiene casi lo mismo con el uso de "volátil" y "registro".
Pero debe tenerse en cuenta que los compiladores más modernos, no hacen ninguna distinción entre los dos tipos de declaración de parámetros.
Ejemplos de una compilación con gcc en linux:
En cualquier caso, la declaración del prototipo localmente no sirve de nada, porque no hay llamada sin parámetros, la referencia a este prototipo será negligente. Si utiliza el sistema con "parámetro formal sin tipo", para una llamada externa, proceda a generar un tipo de datos de prototipo declarativo.
Me gusta esto:
int myfunc(int param);