web-dev-qa-db-fra.com

Pourquoi tous les fichiers C écrits par mon conférencier commencent-ils par un seul # sur la première ligne?

Je suis en train de parcourir quelques notes de cours C, et every Le fichier source du programme C commence par un seul # sur la première ligne du programme.

Ensuite, il y a des lignes vides, suivies de cet autre élément suivi de la fonction main.

Quelle est la raison de #?

(Il est hors terme maintenant et je ne peux pas vraiment demander au gars.)

Voici un exemple:

#

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}
416
The Main Man

Wow, cette exigence remonte bien avant jusqu'aux années 1970.

Dans les jours très tôt de C pré-normalisé, si vous souhaitez appeler le préprocesseur , vous deviez alors écrire un # comme première chose dans la première ligne d'un fichier source. Écrire uniquement un # en haut du fichier offre une grande souplesse quant au placement des autres directives de préprocesseur.

De n brouillon C original par le grand Dennis Ritchie lui-même :

12. Lignes de contrôle du compilateur

[...] Pour que le préprocesseur soit appelé, il est nécessaire que la toute première ligne du programme commence par #. Comme les lignes nulles sont ignorées par le préprocesseur, cette ligne ne doit contenir aucune autre information.

Ce document est une excellente lecture (et m'a permis de sauter sur cette question comme un chat fou).

Je soupçonne que le conférencier est simplement sentimental - cela n’est plus nécessaire depuis l’ANSI C.

598
Bathsheba

Ne fait rien

À partir de la norme ISO de C/C++:

Une directive de prétraitement de la forme

# new-line

n'a aucun effet.

Donc, dans les compilateurs actuels, cela n hachage vide ne fait rien (comme- new-line ; n'a aucune fonctionnalité).


PS: Dans C pré-normalisé , # new-line avait un rôle important, il était utilisé pour invoquer le Processeur (comme l'a souligné @Bathsheba). Donc, le code ici a été soit écrit dans cette période, ou venait d'habitude.

0
Minhas Kamal