Todo lo que nunca quisiste saber sobre main()… y más secretos Apple

Autor: | Última modificación: 15 de noviembre de 2022 | Tiempo de Lectura: 2 minutos
Temas en este post: ,

Secretos Apple: Lo desconocido de main()

Decían que cuando reproducías un LP  de Heavy Metal al revés, se oían mensajes satánicos. Al parecer, esta técnica ha sobrevivido al fin del LP y sigue vigente en la era digital. De hecho entre los secretos Apple tenemos que, si depuras la ROM de un Apple II, verás fantasmas.

Y eso no es todo. Según Christopher Forrest en Savage Bay, en Ibiza hay una organización secreta que ha encontrado un mensaje oculto en el genoma humano, pasado de generación en generación en zonas inactivas del ADN. Menudo resacón ha debido de ser el del amigo Christopher después de su última juerga ibicenca…

Ibiza2

¡Pero hay más! Según Carl Sagan en Contacto, Dios (que es un marciano en esa novela), ha dejado mensajes encriptados en pi, e y otros números irracionales. Se ve que cuando no grababa episodios de Cosmos, fumaba todo lo que pillaba por delante.

Ahora bien, para ver mensajes ocultos (¿quién mató a JFK? ¿qué significa exactamente fistro?) no hace falta ir tan lejos. De hecho, los tenemos frente a nosotros.

Parámetros ocultos en main

int main(int argc,  const char * argv[])

Esta es la firma más común de main(). Devuelve un entero que indica el resultado del programa y acepta dos parámetros: un array de cadenas y el número de cadenas. En dichas cadenas se guardan los parámetros que hayan pasado por la linea de comandos al programa en cuestión.

Hay otra versión de main() que acepta un tercer parámetro:

int main(int argc, const char *argv[], const char *envp[])

En envp se pasan las variables de entorno del programa. No queda muy claro la utilidad de esto, ya que esa información se puede obtener fácilmente con la librería estándar de C. Al parecer es un invento de Microsoft, aunque también funciona en la mayoría de los Unixes, como OSX.

Los secretos de Apple

Entre los secretos Apple tenemos otro parámetro más: char *apple

int main(int argc,  const char * argv[],  const char *envp[], const char *apple[])

Esto le permite pasar cualquier parámetro «oculto» a una aplicación. El primer valor apple[0] suele ser la ruta al ejecutable y en loos demás podría ir cualquier cosa.

¿Qué información se pasa más allá de apple[0]? ¿Que Steve Jobs en realidad no ha muerto y ha vuelto a su planeta? Vaya Ud a saber…