que programacion lenguaje funcion example argumentos c syntax main

programacion - "Int main(vooid)"? ¿Cómo funciona?



que es la funcion main en el lenguaje c (4)

En C, el tipo predeterminado para un argumento de función es int . Por lo tanto, su programa está tratando la palabra vooid como int main(int vooid) , que es un código perfectamente válido.

Hace poco tuve que escribir un pequeño programa de prueba C y, en el proceso, cometí un error ortográfico en la función principal al usar accidentalmente vooid lugar de void .

Y aún así funcionó.

Reduciéndolo a su versión completa más pequeña, terminé con:

int main (vooid) { return 42; }

Esto realmente compila ( gcc -Wall -o myprog myprog.c ) y, cuando se ejecuta, devuelve 42.

¿Cómo es exactamente este código válido?

Aquí hay una transcripción cortada y pegada de mi shell bash para mostrar lo que estoy haciendo:

pax$ cat qq.c int main (vooid) { return 42; } pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq pax$ echo $? 42


Es un código válido, porque myprog.c contiene:

int main (vooid) // vooid is of type int, allowed, and an alias for argc { return 42; // The answer to the Ultimate Question }

vooid contiene uno más el número de argumentos pasados ​​(es decir, argc ). Entonces, en realidad, todo lo que has hecho es cambiar el nombre de argc a vooid .


Simplemente usa la sintaxis de declaración de función "antigua"; está implícitamente declarando un parámetro int llamado vooid .


Solo gcc -std=c89 -Wall -o qq qq.c y gcc -std=gnu89 -Wall -o qq qq.c no emiten una advertencia. Todos los demás estándares emiten una advertencia sobre el tipo vooid int para vooid .

int main(chart) comporta de la misma manera que hace int main (vooid) .

return vooid; devuelve la cantidad de argumentos de línea de comando.

Probé con gcc 4.4.5 en el sistema de prueba Debian.