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.