Come affermato da @Krishnabhadra, tutte le precedenti risposte di altri utenti hanno un'interpretazione corretta e voglio solo fare un'analisi più dettagliata di alcuni punti.
In Old-C come in ANSI-C il " parametro formale non tipizzato ", prendere la dimensione del registro di lavoro o la capacità di profondità delle istruzioni (registri ombra o ciclo cumulativo delle istruzioni), in una MPU a 8 bit, sarà un int16, in una 16 bit MPU e così sarà un int16 e così via, nel caso in cui le architetture a 64 bit possano scegliere di compilare opzioni come: -m32.
Anche se sembra un'implementazione più semplice ad alto livello, Per passare più parametri, il lavoro del programmatore nella fase del tipo di dati dimencion di controllo, diventa più impegnativo.
In altri casi, per alcune architetture di microprocessori, i compilatori ANSI personalizzati, hanno sfruttato alcune di queste vecchie funzionalità per ottimizzare l'uso del codice, costringendo la posizione di questi "parametri formali non tipizzati" a funzionare all'interno o all'esterno del registro di lavoro, oggi ottieni quasi lo stesso con l'uso di "volatile" e "register".
Ma va notato che i compilatori più moderni, non fanno alcuna distinzione tra i due tipi di dichiarazione dei parametri.
Esempi di una compilation con gcc sotto linux:
In ogni caso la dichiarazione del prototipo a livello locale non è di alcuna utilità, poiché non vi è alcuna chiamata senza parametri che rimandano a questo prototipo. Se si utilizza il sistema con "parametro formale non tipizzato", per una chiamata esterna, procedere con la generazione di un tipo di dati prototipo dichiarativo.
Come questo:
int myfunc(int param);