Estoy revisando algunas notas del curso C, y cada archivo fuente del programa C comienza con un solo #
en la primera línea del programa.
Luego hay líneas en blanco, y luego otras cosas seguidas de la main
función.
¿Cuál es el motivo de la #
?
(Está fuera de plazo ahora y realmente no puedo preguntarle al muchacho).
Aquí hay un ejemplo:
#
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
c
c-preprocessor
El hombre principal
fuente
fuente
#
, luego una línea en blanco, luego el programa.#
es la ofuscación. Si desea confundir a todos, puede comenzar, por ejemplo, todos sus archivos fuente con la línea#//#BEGIN#\\#
(que no hace absolutamente nada).Respuestas:
Wow, este requisito se remonta a la década de 1970.
En los primeros días de la C previamente estandarizada, si quería invocar el preprocesador , tenía que escribir un
#
como lo primero en la primera línea de un archivo fuente. Escribir solo una#
en la parte superior del archivo ofrece flexibilidad en la ubicación de las otras directivas de preprocesador.De un borrador original en C del gran Dennis Ritchie :
Ese documento es una gran lectura (y me permitió saltar sobre esta pregunta como un gato loco).
Sospecho que es el profesor simplemente sentimental: no se ha requerido ciertamente desde ANSI C.
fuente
#
en una línea por sí mismo, solo que comienza con un#
, así que ¿por qué no ir directamente por un#include
? ¿O lo estoy entendiendo mal?No hace nada
A partir del estándar ISO de C / C ++:
Entonces, en los compiladores de hoy, ese hash vacío no hace nada (como,
new-line ;
no tiene funcionalidad).PD : En C
# new-line
preestandarizado , tenía un papel importante, se utilizó para invocar el preprocesador C (como lo señaló @Bathsheba). Entonces, el código aquí fue escrito dentro de ese período de tiempo o vino por hábito.fuente
Necesita saber sobre el proceso de compilación de C. Porque eso es "debe saber" cómo el código fuente se convierte en código binario ejecutable (archivo).
Desde el proceso de compilación, el código fuente C tiene que cruzar la sección del preprocesador. Pero, ¿cómo decirle al compilador que preprocese el código? ... Que el símbolo # de tiempo se introdujo en el indicador de preproceso al compilador.
Por ejemplo
#define PI 3.141
está en el código fuente. Luego se cambiará después de la sesión de preprocesamiento. Significa que todo el PI se cambiará a 3.141.Esto es como
#include <stdio.h>
, las funciones de E / S estándar se agregarán a su código fuente.Si tiene una máquina Linux, compile como
gcc -save-temps source_code.c
. Y ver las salidas del compilador.fuente