es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedo utilizar de manera segura funciones que contienen “main” en su nombre además de “int main(int argc, char **argv)”?

Recientemente me encontré con este micro artículo donde se indica lo siguiente:

  1. En tu programa en C, solo puedes tener una función  “main” , ya sea que se llame  “main” o de otra manera. Si usas IPA, IPA terminará con un mensaje de error emitido cuando se detecten más de una función  “main”.

¿Entiendo correctamente que el nombre main (o algún otro nombre que esté explícitamente definido como un reemplazo de int main() para un punto de entrada) es una parte importante y, por ejemplo, puedo tener int main(int argc, char **argv) y int sub_main(int argc, char **argv) en el mismo programa?

Si no es así, y si hay un main como parte de los nombres de las funciones y / o (int argc, char **argv) como parámetros, podría tener un problema, ¿cambiar los lugares de los parámetros a int sub_main(char **argv, int argc) hará alguna diferencia?

Hasta ahora no he tenido problemas, así que supongo que int main(int argc, char **argv) e int sub_main(int argc, char **argv) pueden coexistir felizmente. Aun así, puede ser útil saberlo con certeza.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el artículo que ha referenciado, es verdad que un programa en C sólo puede tener una función de punto de entrada llamada “main”, ya sea explícitamente nombrada así o dada un nombre diferente a través de una declaración #define. Si se detectan más de una función con una función de punto de entrada llamada “main”, se producirá un error.

    Sin embargo, es posible tener otra función con un nombre diferente pero que tenga los mismos parámetros que la función “main” (es decir, int main(int argc, char **argv)). Esta función puede coexistir con la función “main” sin ningún problema.

    Cambiar el orden de los parámetros en la firma de la función (es decir, int sub_main(char **argv, int argc)) no hace ninguna diferencia en este caso.

    En resumen, aunque un programa en C sólo puede tener una función de punto de entrada llamada “main”, es posible tener otra función con la misma firma de parámetros que coexista junto a ella.

Comments are closed.