elenco vacío de argc y argv

Estoy mirando un fragmento de código C ++ y la primera línea de la función principal me llamó la atención:

int main(int argc, const char* argv[]) {
    (void)argc; (void)argv;
     ...
}

Aparte de esta línea, argc y argv no se usan en absoluto. ¿Por qué el autor está haciendo un elenco vacío? ¿Podría ser para evitar que el compilador se queje de las variables no utilizadas?

preguntado el 08 de noviembre de 11 a las 14:11

Aunque en este caso el autor debería haber utilizado int main(). ¡Problema de advertencia del compilador resuelto! -

Tenga en cuenta que no se requiere que main para tomar esos argumentos, por lo que si no los usa, simplemente déjelos fuera. Además, al menos VC ++ 2005 no advierte si los argumentos no tienen nombre (en caso de que necesite conservar la firma por alguna razón). -

Esto podría deberse a alguna idea para el uso futuro de los parámetros. -

@Nawaz: ciertamente es un duplicado, pero no de la pregunta a la que se vincula, que se trata de (nulos) elencos de valores de retorno. -

4 Respuestas

"¿Podría ser para evitar que el compilador se queje de las variables no utilizadas?"

respondido 08 nov., 11:18

Sí, es exactamente para decirle al compilador que no se queje de las variables no utilizadas.

respondido 08 nov., 11:18

Si configura -Werror opción, el compilador convierte todas las advertencias en errores, deteniendo la compilación. Es un conjunto de buenas prácticas -Wall -Werror para comprobar todas las inconsistencias.

respondido 08 nov., 11:18

Creo que -Wall (tal vez con -Wextra) es una buena práctica, pero soy menos positivo sobre -Werror. Hay casos muy raros en los que una advertencia específica dada por -Wall debe omitirse (pero luego, debe explicar en un gran comentario por qué es así). - Basile Starynkevitch

Sí, es para evitar que el compilador se queje de las variables no utilizadas. En este caso, una mejor forma sería:

int main(int, char**) {
    ...
}

Dejar los parámetros sin nombre le dice al compilador que están ahí pero que no se utilizan.

respondido 08 nov., 11:20

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.