Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

387
Vistas
¿Es esta una definición válida para main()?

La Norma C11 declara que:

5.1.2.2.1 Inicio del programa

  1. La función llamada al inicio del programa se llama main. La implementación no declara ningún prototipo para esta función. Se definirá con un tipo de retorno de int y sin parámetros:

     int main(void) { /* ... */ }

    o con dos parámetros (referidos aquí como argc y argv , aunque se puede usar cualquier nombre, ya que son locales a la función en la que se declaran):

     int main(int argc, char *argv[]) { /* ... */ }

    o equivalente; 10) , o de alguna otra manera definida por la implementación.


10) Por lo tanto, int se puede reemplazar por un nombre typedef definido como int , o el tipo de argv se puede escribir como char ** argv , y así sucesivamente.

Ignoraremos esta parte: o de alguna otra manera definida por la implementación. ya que solo estoy interesado en definiciones equivalentes a los dos ejemplos anteriores.

¿Sería esta una definición válida para main ya que char* a[4] y char** son equivalentes?

 int main(int argc, char* argv[4]){/*...*/}

¿Qué tal una matriz VLA? Asumimos que printf devolverá un valor int positivo:

 int main(int argc, char* argv[printf("Hello there!")]){/*...*/}
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Sí, todo esto está cubierto por el "o equivalente". La nota al pie sobre el cambio de nombre de los parámetros o el uso de tipos typedef por tipo son solo ejemplos.

Mi variante favorita es

 int main(int argc, char* argv[argc+1]){/*...*/}

porque tiene la mayor cantidad de información sobre la semántica de todas las funciones main .

over 4 years ago · Santiago Trujillo Denunciar

0

int main(int argc, char* argv[4]){/*...*/}

es una firma válida de main . El compilador ignorará 4 en char argv[4] y es equivalente a char argv[] = char **argv . Lo mismo ocurre con la segunda firma.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda