Qu’est-ce que cette définition de fonction étrange signifie?

Je suis tombé sur ce programme C dans un article de blog :

main() { int n; n = 151; f(n); } f(x) int x; { printf("%d.\n", x); } 

La poste ne l’explique pas. Quelqu’un peut-il expliquer ce que cette définition de fonction étrange signifie?

C’est le style K & R du code C, sa syntaxe est toujours valide, mais je vous suggère de ne pas l’utiliser dans du code nouvellement écrit.

 f(x) int x; 

est équivalent à ANSI C:

 void f(int x) 

K & R C est le langage C décrit dans la première édition du langage de programmation du livre C par Brian Kernighan et Dennis Ritchie, et portant le nom des deux auteurs. La deuxième édition du livre a été mise à jour pour utiliser ANSI C.

 f(x) int x; { printf("%d.\n", x); } 

est une manière plus ancienne de définir une fonction. Maintenant, il peut être lu comme

 void f(int x) { printf("%d.\n", x); } 

Ce code est tout simplement mauvais.

  1. Déclaration de fonction obsolète f()
  2. Il devrait y avoir une déclaration directe de f() avant main()
  3. Le type de retour est manquant pour f()

veuillez changer votre source d’apprentissage c!

c’est un très vieux style de C (K & R C).

 f(x) int x; {} 

est équivalent à

 void f(int x) {} 

vous ne devriez vraiment pas perdre de temps à apprendre cela.

cherchez des sources qui enseignent la norme ANSI C C89 / C90 et notez également les nouvelles fonctionnalités de la C99 (qui n’est pas largement adoptée par de nombreux compilateurs, alors connaissez les différences)

C’est un très vieux style de codage. Cela ne fonctionne pas dans ANSI. Mieux vaut utiliser quelque chose comme

 void f(int x) { ... ... ...;/*Whatever is required*/ }