Déclarations de variable C après l’en-tête de la fonction dans la définition

Lors de la lecture du code source de FreeBSD (voir: lignes 158-173 de radix.h), j’ai trouvé des déclarations de variables qui suivaient le “titre de fonction” dans la définition.

Est-ce valide dans ISO C (C99)? quand cela devrait-il être fait dans le code de production au lieu de simplement déclarer les variables dans “l’en-tête de la fonction?” Pourquoi est-ce fait ici?

Je me réfère à la fonction en-tête de la chaîne qui ressemble à ceci: int someFunction(int i, int b) {

Cela ressemble au style K & R (pré-ANSI). Je ne pense pas que C99 soit valide, mais utilise-t-il C99? Joel

Je pense que vous faites référence à la manière “à l’ancienne” de déclarer les parameters en C avant l’ANSI. Cela ressemblait à ceci:

 int foo(a, b) int a, int b { /* ... */ } 

Cela peut être encore valable dans C99 et sera accepté par les compilateurs pour des raisons de compatibilité ascendante, mais cela devrait être considéré comme obsolète / archaïque.

Er. Je comprends peut-être mal votre question, mais i et b dans cet extrait de code sont des parameters de la fonction. Ce n’est pas une manière compacte de déclarer des variables dans la fonction, comme:

 int someFunction() { int i, b; 

Lorsque vous appelez someFunction , vous lui transmettez ces arguments:

 someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`