[ Nota: esto era cierto para las versiones anteriores de C, pero se modificó en C11 (y versiones más nuevas). En versiones más nuevas, foo() es lo mismo que foo(void). Consulte esto -> https://port70.net/~nsz/c/c11/n1570.html#6.11.6]
Considere las siguientes dos definiciones de main().
CPP
int main() { /* */ return 0; }
y
CPP
int main(void) { /* */ return 0; }
¿Cuál es la diferencia?
En C++, no hay diferencia, ambos son iguales.
Ambas definiciones también funcionan en C, pero la segunda definición con void se considera técnicamente mejor, ya que especifica claramente que solo se puede llamar a main sin ningún parámetro.
En C, si la firma de una función no especifica ningún argumento, significa que la función se puede llamar con cualquier número de parámetros o sin parámetros. Por ejemplo, intente compilar y ejecutar los siguientes dos programas en C (recuerde guardar sus archivos como .c). Tenga en cuenta la diferencia entre dos firmas de fun().
C++
// Program 1 (Compiles and runs fine in C, but not in C++) #include <iostream> void fun() { } int main(void) { fun(10, "GfG", "GQ"); return 0; } // This code is contributed by sarajadhav12052009
C
// Program 1 (Compiles and runs fine in C, but not in C++) void fun() { } int main(void) { fun(10, "GfG", "GQ"); return 0; }
Salida de código C:
Salida del código C++:
prog.cpp: In function ‘int main()’: prog.cpp:10:24: error: too many arguments to function ‘void fun()’ fun(10, "GfG", "GQ"); ^ prog.cpp:6:6: note: declared here void fun() { } ^
El programa anterior se compila y funciona bien (ver esto ), pero el siguiente programa falla en la compilación (ver esto )
C++
// Program 2 (Fails in compilation in both C and C++) void fun(void) { } int main(void) { fun(10, "GfG","GQ"); return 0; } // This code is contributed by sarajadhav12052009
C
// Program 2 (Fails in compilation in both C and C++) void fun(void) { } int main(void) { fun(10, "GfG", "GQ"); return 0; }
Salida del código C/C++:
prog.cpp: In function ‘int main()’: prog.cpp:8:23: error: too many arguments to function ‘void fun()’ fun(10, "GfG","GQ"); ^ prog.cpp:4:6: note: declared here void fun(void) { } ^
A diferencia de C, en C++, los dos programas anteriores fallan en la compilación. En C++, tanto fun() como fun(void) son iguales.
Entonces, la diferencia es que, en C, se puede llamar a int main() con cualquier número de argumentos, pero solo se puede llamar a int main(void) sin ningún argumento. Aunque no hace ninguna diferencia la mayoría de las veces, usar “int main(void)” es una práctica recomendada en C.
Ejercicio:
Prediga la salida de los siguientes programas en C.
Pregunta 1
C
#include <stdio.h> int main() { static int i = 5; if (--i){ printf("%d ", i); main(10); } }
Pregunta 2
C
#include <stdio.h> int main(void) { static int i = 5; if (--i){ printf("%d ", i); main(10); } }
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA