Pregunta ¿Qué significa esta definición de función extraña?


Me encontré con este programa de C en una publicación de blog:

main()
{
    int n;
    n = 151;
    f(n);
}

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

El post no lo explica. ¿Alguien puede explicar qué significa esta definición de función extraña?


5
2018-03-21 06:54


origen


Respuestas:


Este es el estilo K&R del código C, sigue siendo una sintaxis de C válida, pero le sugiero que no lo utilice en el código de nueva escritura.

f(x)
int x;

es equivalente a ANSI C:

void f(int x)

K & R C es el lenguaje C descrito en la primera edición del libro Lenguaje de programación c por Brian Kernighan y Dennis Ritchie, y el nombre de los dos autores. La segunda edición del libro se actualizó para usar ANSI C.


10
2018-03-21 06:56



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

Es una forma más antigua de definir la función. Ahora se puede leer como

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

6
2018-03-21 06:56



Este código es simplemente malo.

  1. Declaración obsoleta de la función f()
  2. Debería haber una declaración adelantada de f() antes de main()
  3. El tipo de devolución falta para f()

1
2018-03-21 06:59



Por favor cambia tu fuente de aprendizaje!

ese es un estilo muy antiguo de C (K&R C).

f(x)

int x;
{}

es equivalente a

void f(int x)
{}

Realmente no deberías perder el tiempo aprendiendo eso.

busque fuentes que enseñen ANSI C C89 / C90 y también tenga en cuenta las nuevas características de C99 (que muchos compiladores no han adoptado ampliamente, así que conozca las diferencias)


0
2018-03-21 06:59



Este es un estilo muy antiguo de codificación. Esto no funciona en ANSI. Mejor usar algo como

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

-2
2018-03-21 08:33