Se define en el código fuente de su biblioteca C. Normalmente solo necesita los encabezados para la compilación, pero puede encontrar el código fuente para muchas bibliotecas estándar de código abierto (como glibc).
En glibc, es definido en libio/stdio.c
como así:
_IO_FILE *stdin = (FILE *) &_IO_2_1_stdin_;
que a su vez define utilizando una macro en libio/stdfiles.c
como esto:
DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES);
La definición de la DEF_STDFILE
macro varía dependiendo en algunas cosas, pero establece más o menos una estructura FILE
apropiada utilizando el descriptor de archivo 0
(que es una entrada estándar en Unix).
La definición puede (y por supuesto lo hace) variar dependiendo de su biblioteca C, y ciertamente por plataforma. Si lo desea, puede continuar la búsqueda de ganso alrededor de las diversas partes del componente de E/S de su biblioteca estándar.
¿por qué es esto downvoted? – Alan